私の「Ansible」プレイブックでsudoを使ってタスクを実行しようとすると、エラーメッセージが表示されます。ここでsudoing時にパスワードがなくなる
は私の脚本です:
---
- hosts: production
gather_facts: no
remote_user: deployer
become: yes
become_method: sudo
become_user: root
tasks:
- name: Whoami
command: /usr/bin/whoami
私はroot
するにwhoami期待するだろうが、タスクはエラーメッセージで失敗します。
» ansible-playbook -i ansible_hosts sudo.yml --ask-sudo-pass
SUDO password: [I paste my sudo password here]
PLAY [production] *************************************************************
GATHERING FACTS ***************************************************************
fatal: [MY.IP] => Missing become password
TASK: [Whoami] ****************************************************************
FATAL: no hosts matched or all hosts have already failed -- aborting
私は手動で箱の中にSSHと須藤にそれをしようとすると
» ssh [email protected]
» sudo whoami
[I paste the same sudo password]
root
デプロイヤーユーザーのパスワードはAnsiblによって設定されています(別の脚本で)次のようにE:
- hosts: production
remote_user: root
# The {{ansible_become_pass}} comes from this file:
vars_files:
- ./config.yml
tasks:
- name: Create deployer user
user: name=deployer uid=1040 groups=sudo,deployer shell=/bin/bash password={{ansible_become_pass}}
{{ansible_become_pass}}
は、私は次のPythonスニペットを使用してハッシュ願望パスワードです:
python -c 'import crypt; print crypt.crypt("password I desire", "$1$SomeSalt$")'
"password I desire"
は、パスワードと"$1$SomeSalt$"
と交換では、ランダムな塩であります。
私はAnsibleバージョン1.9.4を使用しています。
問題が何ですか?
あなたのプレイブックの両方を試してみましたが、彼らは1.9.2で大変でした。私が作った唯一の変更は、安全なユーザーパスワードを設定することでした。別のファイルからインクルードするのではなく、値を貼り付けました。私はそれが違いをもたらすだろうと想像することはできません。私はちょうど私のワークステーションを使っていて、localhostに接続していました。 –
おそらくあなたのバージョンのバグは--ask-sudoスイッチとあなたの作戦の構文になるでしょうか? --ask-sudoと--ask-becomeの両方を試してみたところ、どちらもうまくいきました。 –