lineinfileを使用したAnsibleループ

lineinfileを使用したAnsibleループ

非常に単純なゲームでエラーが発生します。

- 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

関連情報