Ansibleでユーザ追加
こんにちは當間です
前回はpingでAnsibleの動作確認だけで終わってしまいました
せっかくのAnsibleなので今回はユーザ追加を行ってみましょう
hostsには接続するサーバ名をblog2としておき、接続IP、ユーザ、利用するssh-key等の細かい接続設定は~/.ssh/config辺りに書いておきます
例としてhogeユーザを追加するplaybookを書きます
$ vi site.yml ################################################## --- - hosts: target vars: - username: hoge tasks: - name: Add User user: name={{ username }} ##################################################hostsで接続先グループをtargetと指定、targetには現在blog2しか記載がないのでblog2への接続になります
targetグループにblog3,blog4と追加しておけば3台同時に対象とする事もできますさっそく実行してみましょう
$ ansible-playbook -i hosts site.yml PLAY [target] ****************************************************************** TASK [setup] ******************************************************************* ok: [blog2] TASK [Add User] **************************************************************** fatal: [blog2]: FAILED! => {"changed": false, "cmd": "/usr/sbin/useradd -m hoge", "failed": true, "msg": "[Errno 13] 許可がありません", "rc": 13} NO MORE HOSTS LEFT ************************************************************* to retry, use: --limit @site.retry PLAY RECAP ********************************************************************* blog2 : ok=1 changed=0 unreachable=0 failed=1useraddコマンドでエラーになってしまいました
どうやら現在ssh接続しているユーザではuseraddコマンドを実行する権限が足りないようです
become: yesとしてsudoで処理するようにplaybookに付け足しましょう$ vi site.yml ################################################## --- - hosts: target vars: - username: hoge tasks: - name: Add User user: name={{ username }} become: yes ##################################################再実行です
$ ansible-playbook -i hosts site.yml PLAY [target] ****************************************************************** TASK [setup] ******************************************************************* ok: [blog2] TASK [Add User] **************************************************************** fatal: [blog2]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "sudo: パスワードが必要です\r\n", "msg": "MODULE FAILURE", "parsed": false} NO MORE HOSTS LEFT ************************************************************* to retry, use: --limit @site.retry PLAY RECAP ********************************************************************* blog2 : ok=1 changed=0 unreachable=0 failed=1sudo実行時にパスワードが必要な為、自動実行処理が失敗したようです
ansible実行時に-Kオプションを使って、sudoパスワードをプロンプトから入力しておきましょう$ ansible-playbook -i hosts site.yml -K SUDO password: PLAY [target] ****************************************************************** TASK [setup] ******************************************************************* ok: [blog2] TASK [Add User] **************************************************************** changed: [blog2] PLAY RECAP ********************************************************************* blog2 : ok=2 changed=1 unreachable=0 failed=0成功しました!
ひとまずhogeユーザの追加はできましたが、パスワード設定やssh-key設定がまだなのでこのユーザではログインができません。
userモジュールのオプションでpasswordやgenerate_ssh_keyを使えば目的が達成できそうです。
ただpasswordオプションは「crypted password」ということで一工夫必要なので、次回また記載させて頂きます。