web-dev-qa-db-ja.com

Ansibleでchownコマンドを使用していますか?

私はubuntuでコマンドを持っています

  Sudo chown $(id -u):$(id -g) $HOME/.kube/config 

Ansibleスクリプトに変換したい。以下を試しました

- name: Changing ownership
      command: chown $(id -u):$(id -g) $HOME/.kube/config
      become: true 

しかし、私は以下のようにエラーになります

致命的:[ubuntu]:失敗しました! => {"変更":t>致命的:[ubuntu]:失敗! => {"変更":true、 "cmd":["chown"、 "$(id"、 "-u):$(id"、 "-g)"、 "$ HOME/.kube/config"] 、「delta」:「0:00:00.003948」、「end」:「2019-07-17 07:22:31.798773」、「msg」:「ゼロ以外の戻りコード」、「rc」:1、「start ":" 2019-07-17 07:22:31.794825 "、" stderr ":" chown:invalid option-'u'\n'chown --help 'for more information。 "、" stderr_lines ":[" chown :無効なオプション-'u' "、"詳細については 'chown --help'を試してください。 "]、" stdout ":" "、" stdout_lines ":[]} rue、" cmd ":[" chown "、 "$(id"、 "-u):$(id"、 "-g)"、 "$ HOME/.kube/config"]、 "delta": "0:00:00.003948"、 "end": " 2019-07-17 07:22:31.798773 "、" msg ":"ゼロ以外の戻りコード "、" rc ":1、" start ":" 2019-07-17 07:22:31.794825 "、" stderr " : "chown:invalid option-'u'\n'chown --help 'for more information。"、 "stderr_lines":["chown:invalid option-' u '"、 "Try' chown --help '詳細] "]、" stdout ":" "、" stdout_lines ":[]}

編集:ファイルモジュールも機能しませんでした。

  - name: Create a symbolic link
    file:
      path: $HOME/.kube
      owner: $(id -u)
      group: $(id -g)
3
TechChain

ファイルがすでに存在していて、権限を変更したいだけの場合は、AnsibleファクトからユーザーIDとグループを取得して、次のようにします。

- name: Change kubeconfig file permission
  file:
    path: $HOME/.kube/config 
    owner: "{{ ansible_effective_user_id }}"
    group: "{{ ansible_effective_group_id }}"

必要に応じて、ansible_real_group_id/ansible_real_user_idまたはansible_user_gid/ansible_user_uidを使用することもできます。

Ansible式を囲む二重引用符を忘れないでください。

実際のユーザーと効果的なユーザーの違いの詳細については この投稿 を参照してください

利用可能なすべての変数については、 システム変数に関するAnsibleのドキュメント を参照してください

4
Pierre B.

以下をお試しください。

  - name: chown to username you login and chmod as required
    file:
      path: $HOME/.kube/config
      owner: "{{ ansible_user }}"
      group: "{{ ansible_user }}"
      mode: 0644
0
Prakash Krishna