Red Hat Enterprise Linux 9.0から、SELinuxの無効化の方法がRHEL8と異なります。
この記事ではRHEL9でのAnsibleでSELinuxを無効化する方法をまとめました。
RHEL8でのSELinuxの無効化
RHEL8では以下のconfigファイルにSELINUX=disabledと記載すればSELinuxは無効化できました。
/etc/selinux/config
SELINUX=disabled
RHEL9でAnsibleでSELinuxを無効化する
RHEL9でAnsibleでSELinuxを無効化するには以下のコマンドにて実施する必要があります。
grubby --update-kernel=ALL --args="selinux=0"
これをAnsibleで行うには以下のタスクを実行します。
- name: RHEL9でのSELinux無効化
hosts: all
become: true
tasks:
- name: grubbyコマンドで selinux=0を設定する
ansible.builtin.command: >
grubby --update-kernel=ALL --args="selinux=0"
- name: 設定したパラメータを再起動によって適用する
ansible.builtin.reboot:
reboot_timeout: 60
タスクを抜粋すると以下です。
ansible.builtin.command: >
grubby --update-kernel=ALL --args="selinux=0"
rootユーザーで実行する必要があるのでbecome: yesにして実行します。
ansible.builtin.commandモジュールでコマンドを送信して実行します。
selinux=0を適用するには再起動する必要があるので、以下のタスクによって再起動しています。
- name: 適用したパラメータを再起動によって適用する
ansible.builtin.reboot:
reboot_timeout: 60
実際に実行してみた
まずは–checkをつけて確認してみる。
[root@RHEL95 ansible]# ansible-playbook -i hosts ./tasks/test2.yml -k --check
SSH password:
PLAY [Disable SELinux via kernel parameter] ****************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************************************************
ok: [プライベートIPアドレス]
TASK [grubbyコマンドで selinux=0を適用する] ****************************************************************************************************************
skipping: [プライベートIPアドレス]
TASK [適用したパラメータを再起動によって適用する] **********************************************************************************************************
changed: [プライベートIPアドレス]
PLAY RECAP *************************************************************************************************************************************************
プライベートIPアドレス : ok=2 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
実際に実行する。
[root@RHEL95 ansible]# ansible-playbook -i hosts ./tasks/test2.yml -k
SSH password:
PLAY [Disable SELinux via kernel parameter] ************************************
TASK [Gathering Facts] *********************************************************
ok: [プライベートIPアドレス]
TASK [grubbyコマンドで selinux=0を適用する] ************************************
changed: [プライベートIPアドレス]
TASK [適用したパラメータを再起動によって適用する] ******************************
changed: [プライベートIPアドレス]
PLAY RECAP *********************************************************************
プライベートIPアドレス : ok=3 changed=2 unreachable=0 failed=0 s kipped=0 rescued=0 ignored=0
クライアントに適用されていることを確認する。
[root@RHEL95 ~]# grubby --info ALL | grep linux
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet selinux=0"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet selinux=0"
selinux=0が適用されている。
SELinuxの無効化を解除するには
以下のコマンドを対象のサーバーに対して実行させることでSELinuxの無効化を解除します。
grubby --update-kernel ALL --remove-args selinux
SELinuxが無効化されていることの確認
以下のコマンドでSELinuxが無効化されていることを確認できます。
sestatus
getenforce
実行例です。
[root@RHEL95 ~]# sestatus
SELinux status: disabled
[root@RHEL95 ~]# getenforce
Disabled
パラメータが適用されていることの確認
以下のコマンドでパラメータselinux=0が適用されていることを確認します。
grubby --info ALL | grep "selinux=0"
実行例です。
[root@RHEL95 ~]# grubby --info ALL | grep "selinux=0"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet selinux=0"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet selinux=0"