【RHEL9】AnsibleでSELinuxを無効にする

Linux

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"

タイトルとURLをコピーしました