RHEL8 を Ansible から触ってみよう!

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!

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません