1. ホーム
  2. ansible

[解決済み] Ansibleです。ファイルの内容に変数を設定する

2022-05-15 21:50:24

質問

ec2モジュールで ansible-playbook ファイルの内容を変数に設定したいです。現在、私がやっている方法は以下の通りです。

  1. ファイル名を変数に設定
  2. へのシェルタスク cat ファイル
  3. の結果を使用します。 cat の結果をec2モジュールに渡します。

私のplaybookの内容例です。

vars:
  amazon_linux_ami: "ami-fb8e9292"
  user_data_file: "base-ami-userdata.sh"
tasks:
- name: user_data_contents
  shell: cat {{ user_data_file }}
  register: user_data_action
- name: launch ec2-instance
  local_action:
...
  user_data: "{{ user_data_action.stdout }}"

もっと簡単な方法があると思うのですが、Ansibleのドキュメントを検索しても見つかりませんでした。

どのように解決するのですか?

あなたは ルックアップ を使用すると、ファイルの内容を取得することができます。

user_data: "{{ lookup('file', user_data_file) }}"

警告です。 この検索はローカルファイルに対して行われ、リモートファイルに対しては行われません。

ここでは docs にある完全な例です。 :

- hosts: all
  vars:
     contents: "{{ lookup('file', '/etc/foo.txt') }}"
  tasks:
     - debug: msg="the value of foo.txt is {{ contents }}"