非常に単純なゲームでエラーが発生します。
- name: add to environment
lineinfile:
path: /etc/environment
line: "{{ item }}"
loop:
- "foo=1"
- "bar=2"
この行が存在しない場合は、ファイルに追加したいと思います。私が得るエラーは、
致命的:[10.1.38.15]:失敗しました! => {"msg": "ジョブに定義されていない変数を含むオプションが含まれています。エラー: '項目'が定義されていません。 sandboxにあるようです。/tasks /main.yml':6行、3列。 \n dest: /\n- name: 環境に追加\n ^ここ\n"}
答え1
指示のインデントが間違っていますloop
。これは引数ではありませんlineinfile
。ジョブ設定です。
- name: add to environment
lineinfile:
path: /etc/environment
line: "{{ item }}"
loop:
- "foo=1"
- "bar=2"
答え2
ループを使用してansible lineinfileモジュールを実装しましたが、期待どおりに動作します。
lineinfileループモジュールを使用してsudoersファイルに複数のエントリを追加する機能。
これがあなたの要件を満たしていることを願っています。
- name: "Providing sudo access to linux team users"
lineinfile:
path: /etc/sudoers
line: '{{item}} ALL=(ALL) NOPASSWD: ALL'
state: present
create: yes
validate: 'visudo -cf %s'
loop:
- Admin.Linux
- Admin.Unix
ansible プレイ実行出力
TASK [Providing sudo access to accenture linux team members]
changed: [ANSIBLECLINETNODE] => (item=Admin.Linux)
changed: [ANSIBLECLINETNODE] => (item=Admin.Unix)
以下はsudoersファイルの出力です。
[root@ANSIBLECLINETNODE~]# cat /etc/sudoers| tail -2
Admin.Linux ALL=(ALL) NOPASSWD: ALL
Admin.Unix ALL=(ALL) NOPASSWD: ALL