Red Hat の杉村です。Ansible のテクニカルサポートエンジニアをしています。
RHEL8 がリリースされたということで、早速 Ansible から触ってみることにしました。最新のリリース版は 2.7.10 です。
RHEL8 は5台用意してみました。インベントリファイルを作ります。
[rhel8] 192.168.0.51 192.168.0.52 192.168.0.53 192.168.0.54 192.168.0.55
Ping モジュールを実行してみます。
$ ansible -m ping -i inventory.rhel8 -k rhel8 SSH password: 192.168.0.51 | FAILED! => { "changed": false, "module_stderr": "", "module_stdout": "/bin/sh: /usr/bin/python: そのようなファイルやディレクトリはありません\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127 } 192.168.0.53 | FAILED! => { "changed": false, "module_stderr": "", "module_stdout": "/bin/sh: /usr/bin/python: そのようなファイルやディレクトリはありません\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127 } 192.168.0.55 | FAILED! => { "changed": false, "module_stderr": "", "module_stdout": "/bin/sh: /usr/bin/python: そのようなファイルやディレクトリはありません\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127 } 192.168.0.52 | FAILED! => { "changed": false, "module_stderr": "", "module_stdout": "/bin/sh: /usr/bin/python: そのようなファイルやディレクトリはありません\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127 } 192.168.0.54 | FAILED! => { "changed": false, "module_stderr": "", "module_stdout": "/bin/sh: /usr/bin/python: そのようなファイルやディレクトリはありません\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127 }
Python が入っていない!と怒られてしまいました。RHEL8 では、OS の制御用には platform-python を利用するようになっています。先ほどのインベントリファイルに追加しましょう。
[rhel8] 192.168.0.51 192.168.0.52 192.168.0.53 192.168.0.54 192.168.0.55 [rhel8:vars] ansible_python_interpreter=/usr/libexec/platform-python
今度は ping できました。
$ ansible -m ping -i inventory.rhel8 -k rhel8 SSH password: 192.168.0.54 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.0.51 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.0.52 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.0.55 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.0.53 | SUCCESS => { "changed": false, "ping": "pong" }
Ping ができたということで、yum update もしてみます。プレイブックを書きました。
--- - hosts: rhel8 become: true tasks: - name: yum update yum: name: '*' state: latest
実行してみます。
$ ansible-playbook -i inventory.rhel8 rhel8_yum_update_playbook.yml -k -K SSH password: SUDO password[defaults to SSH password]: PLAY [rhel8] *********************************************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************************************* ok: [192.168.0.54] ok: [192.168.0.52] ok: [192.168.0.55] ok: [192.168.0.53] ok: [192.168.0.51] TASK [yum update] ****************************************************************************************************************************** changed: [192.168.0.51] changed: [192.168.0.54] changed: [192.168.0.55] changed: [192.168.0.52] changed: [192.168.0.53] PLAY RECAP ************************************************************************************************************************************* 192.168.0.51 : ok=2 changed=1 unreachable=0 failed=0 192.168.0.52 : ok=2 changed=1 unreachable=0 failed=0 192.168.0.53 : ok=2 changed=1 unreachable=0 failed=0 192.168.0.54 : ok=2 changed=1 unreachable=0 failed=0 192.168.0.55 : ok=2 changed=1 unreachable=0 failed=0
正しく yum update されていることが確認できました。
[sugimura@rhel8a ~]$ sudo yum history [sudo] sugimura のパスワード: Updating Subscription Management repositories. ID | コマンドライン | 日時 | 動作 | 変更さ ------------------------------------------------------------------------------- 2 | | 2019-05-08 11:20 | I, U | 70 1 | | 2019-05-08 08:02 | Install | 1335 EE
近いうちにリリースされる予定の Ansible 2.8 では、この ansible_python_interpreter を自動的に検出する機能が導入されることになっています。RHEL8 でも引き続き安心して Ansible をご利用ください。Happy Automation!