演習 - Linux システムロール

他の言語でもお読みいただけます:
uk English, japan日本語, france Français

目次

目的

この演習の目的は、Automation Hub および Ansible Galaxy のロールとコレクションの形で既存のコンテンツを理解し、使用することです。

ガイド

Linux システムロールは、特定の実装から抽象化された特定のサブシステムに設定を提供するために一貫性のあるユーザーインターフェースを作成します。たとえば、IP アドレスをネットワークインターフェースに割り当てることは、init ネットワークスクリプト、NetworkManager、systemd-networkd などの特定の実装とは別の一般的な概念である必要があります。

この演習では、2 つの Linux システムロール(timesync ロールおよび firewall ロール)を使用します。

ステップ 1 - Ansible プロジェクトの検証

Ansible 自動コントローラー UI で Projects に移動し、続いて Ansible official demo project をクリックします。

demo project

Ansible 自動コントローラー環境に事前に読み込まれていた Github リポジトリーを書き留めておきます。

https://github.com/ansible/product-demos

ステップ 2 - Ansible Playbook の検証

Web ブラウザーで上記のリンクされたリポジトリーを開きます。playbooks/security/hardening.yml に移動します。

次の 2 つのタスクに注意してください。

- name: Configure Firewall
  when: harden_firewall | bool
  include_role:
    name: linux-system-roles.firewall

- name: Configure Timesync
  when: harden_time | bool
  include_role:
    name: redhat.rhel_system_roles.timesync

それぞれロールおよびコレクションからのロールが含まれる 2 つのタスクがあります。Ansible Galaxy から直接提供されるロールと、Ansible コレクションにあるロールを区別できない場合は、この命名法が役立ちます。

Ansible コレクション namespace.collection.role
Ansible ロール namespace.role

ステップ 3 - Linux システムロールの検証

Ansible Playbook はシンプルです。Ansible Galaxy および Automation Hub が提供する事前にビルドされた Ansible Playbook を使用するだけです。これらは、この Ansible ワークショップ用に事前にインストールされています。

vars:
  firewall:
    service: 'tftp'
    state: 'disabled'
vars:
  timesync_ntp_servers:
    - hostname: foo.example.com
      iburst: yes
    - hostname: bar.example.com
      iburst: yes
    - hostname: baz.example.com
      iburst: yes

ステップ 4 - Ansible ジョブの起動

Ansible 自動コントローラー UI で、Templates に移動します。

ロケット をクリックして、SERVER / Hardening ジョブテンプレートを起動します。

job template

これにより、ジョブを開始する前にサーベイが起動します。サーベイに記入します。

survey

NEXT ボタンをクリックします。

next button

EXTRA VARIABLES を確認して、サーベイの内容を理解します。LAUNCH ボタンをクリックします。

next button

ジョブが開始されたのを確認します!

ステップ 5 - 設定の確認

Ansible コントロールノードから、設定したノードに ssh 接続します。

$ ssh node1

Red Hat Enterprise Linux 8 では、timesync システムロールは chronyd を使用しました。systemctl status コマンドを使用して、これがインストール、有効化、および実行されていることを確認します。

$ sudo systemctl status chronyd.service

完全な出力は以下のとおりです。

[student@ansible ~]$ sudo systemctl status chronyd.service
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-04-21 14:37:14 UTC; 13h ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
 Main PID: 934 (chronyd)
    Tasks: 1 (limit: 23902)
   Memory: 1.8M
   CGroup: /system.slice/chronyd.service
           └─934 /usr/sbin/chronyd

Apr 21 14:37:14 localhost.localdomain systemd[1]: Starting NTP client/server...
Apr 21 14:37:14 localhost.localdomain chronyd[934]: chronyd version 3.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
Apr 21 14:37:14 localhost.localdomain chronyd[934]: Using right/UTC timezone to obtain leap second data
Apr 21 14:37:14 localhost.localdomain systemd[1]: Started NTP client/server.
Apr 21 14:38:12 ip-172-16-47-87.us-east-2.compute.internal chronyd[934]: Selected source 129.250.35.250
Apr 21 14:38:12 ip-172-16-47-87.us-east-2.compute.internal chronyd[934]: System clock TAI offset set to 37 seconds

以下は、時刻が正常に動作していることを確認するのに使用できるその他のコマンドです。

# chronyc tracking  
# chronyc sources
# chronyc sourcestats
# systemctl status chronyd
# chronyc activity
# timedatectl

例:

$ timedatectl
               Local time: Wed 2020-04-22 03:52:15 UTC
           Universal time: Wed 2020-04-22 03:52:15 UTC
                 RTC time: Wed 2020-04-22 03:52:15
                Time zone: UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active

完了

ラボ演習を完了しました


Navigation
Previous Exercise - Next Exercise

Click here to return to the Ansible for Red Hat Enterprise Linux Workshop