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!