はじめに
この実験では、Ansible の設定ファイルについて学び、Ansible の動作をカスタマイズする方法を学びます。Ansible は設定ファイルを使用して、その動作を制御するさまざまな設定を定義します。デフォルトの設定を調べ、カスタム設定ファイルを作成し、さまざまな設定オプションが Ansible の動作にどのように影響するかを理解します。この実験が終了するとき、あなたはさまざまなシナリオに対して Ansible を構成する実践的な経験を得ています。これは、Ansible を独自の特定のニーズと環境に合わせるために不可欠です。
デフォルトの Ansible 設定を理解する
まずは、Ansible のデフォルト設定を調べてみましょう。Ansible は複数の場所で設定ファイルを探し、それぞれの場所には異なる優先順位があります。
まず、システム全体の Ansible 設定ファイルがあるかどうか確認しましょう。
cat /etc/ansible/ansible.cfg
このファイルが存在しない場合、エラーメッセージが表示されるかもしれません。多くの環境ではこれが正常なことです。
次に、Ansible のデフォルト設定値を見てみましょう。これは次のコマンドを実行することでできます。
ansible-config dump
このコマンドは、現在の Ansible のすべての設定を表示します。長いリストなので、いくつかの重要な設定を解説しましょう。
DEFAULT_HOST_LIST:デフォルトのインベントリファイルのパス。DEFAULT_REMOTE_USER:Ansible がリモートホストに接続するために使用するデフォルトの SSH ユーザ。DEFAULT_BECOME_METHOD:Ansible が特権昇格(sudo のような)に使用するデフォルトの方法。
これらすべての設定が理解できなくても心配しないでください。Ansible をもっと使ううちに、自分のニーズに最も関連する設定に慣れていきます。
出力を終了するには Q を押します。
次に、次の手順で使用する簡単なインベントリファイルを作成しましょう。
echo "localhost ansible_connection=local" > /home/labex/project/inventory
これにより、localhost のみが定義された最小限のインベントリファイルが作成されます。
カスタム Ansible 設定ファイルの作成
デフォルト設定を理解したので、カスタム Ansible 設定ファイルを作成しましょう。これにより、デフォルト設定を上書きして、Ansible の動作を自分たちのニーズに合わせることができます。
/home/labex/project ディレクトリに ansible.cfg という名前の新しいファイルを作成します。
nano /home/labex/project/ansible.cfg
このファイルに次の内容を追加します。
[defaults]
inventory = /home/labex/project/inventory
remote_user = labex
host_key_checking = False
stdout_callback = yaml
[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
これらの設定を解説しましょう。
inventory:インベントリファイルのパスを指定します。remote_user:接続に使用するデフォルトの SSH ユーザを設定します。host_key_checking:SSH ホストキーのチェックを無効にします。これはテスト環境で便利ですが、セキュリティ上、本番環境では有効にする必要があります。stdout_callback:出力形式を YAML に変更して、読みやすさを向上させます。become:デフォルトで特権昇格を有効にします。become_method:特権昇格に sudo を使用するように設定します。become_user:特権昇格時に切り替えるユーザを指定します。become_ask_pass:sudo パスワードの入力を促すことを無効にします。
エディタを保存して終了します。nano では、Ctrl+X を押してから、保存を確認するために Y を押し、最後に Enter を押して保存します。
次に、Ansible が新しい設定ファイルを使用していることを確認しましょう。次のコマンドを実行します。
ansible-config dump --only-changed
DEFAULT_BECOME(/home/labex/project/ansible.cfg) = True
DEFAULT_BECOME_ASK_PASS(/home/labex/project/ansible.cfg) = False
DEFAULT_BECOME_METHOD(/home/labex/project/ansible.cfg) = sudo
DEFAULT_BECOME_USER(/home/labex/project/ansible.cfg) = root
DEFAULT_HOST_LIST(/home/labex/project/ansible.cfg) = ['/home/labex/project/inventory']
DEFAULT_REMOTE_USER(/home/labex/project/ansible.cfg) = labex
DEFAULT_STDOUT_CALLBACK(/home/labex/project/ansible.cfg) = yaml
HOST_KEY_CHECKING(/home/labex/project/ansible.cfg) = False
このコマンドは、デフォルト設定と異なる設定のみを表示します。カスタム ansible.cfg ファイルで行った変更が表示されるはずです。
カスタム設定のテスト
カスタム設定ができたので、それをテストするための簡単なプレイブックを作成しましょう。これにより、設定の変更が Ansible の動作にどのように影響するかを理解する手助けになります。
/home/labex/project ディレクトリに test_config.yml という名前の新しいファイルを作成します。
nano /home/labex/project/test_config.yml
内容を次のように更新します。
---
- name: Test Custom Configuration
hosts: all
tasks:
- name: Display remote user
debug:
msg: "Connected as user: {{ ansible_user }}"
- name: Display privilege escalation info
debug:
msg: "Privilege escalation is {{ 'enabled' if ansible_become | default(false) else 'disabled' }}"
- name: Show Ansible configuration
debug:
msg: "Inventory file: {{ lookup('config', 'DEFAULT_HOST_LIST') }}"
- name: Check if become is enabled in ansible.cfg
command: grep "become = True" /home/labex/project/ansible.cfg
register: become_check
changed_when: false
failed_when: false
- name: Display become setting from ansible.cfg
debug:
msg: "Become is {{ 'enabled' if become_check.rc == 0 else 'disabled' }} in ansible.cfg"
この更新されたプレイブックでは、次の変更が行われています。
ansible_becomeにデフォルト値を追加して、未定義の変数エラーを防ぎました。become設定を直接ansible.cfgファイルで確認する 2 つの新しいタスクを追加して、設定のより正確な表現を提供します。
次に、更新されたプレイブックを実行しましょう。
ansible-playbook /home/labex/project/test_config.yml
これはエラーなく実行され、Ansible の設定に関する情報が表示されるはずです。
また、ansible.cfg ファイルを更新して、廃止警告に対処しましょう。
nano /home/labex/project/ansible.cfg
[defaults] セクションの下に次の行を追加します。
interpreter_python = /usr/bin/python3
ansible.cfg ファイルは次のようになっているはずです。
[defaults]
inventory = /home/labex/project/inventory
remote_user = labex
host_key_checking = False
stdout_callback = yaml
interpreter_python = /usr/bin/python3
[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
エディタを保存して終了します。
次に、もう一度プレイブックを実行するとき:
ansible-playbook /home/labex/project/test_config.yml
廃止警告なしで出力が表示され、設定が正しく表示されるはずです。
まとめ
この実験では、Ansible の設定ファイルと Ansible の動作をカスタマイズする方法について学びました。以下が要点です。
- Ansible は設定ファイルを使用して動作を制御します。デフォルト設定は
ansible-config dumpコマンドを使用して確認できます。 - デフォルト設定を上書きするためにカスタム設定ファイルを作成できます。これらのファイルは通常
ansible.cfgと命名され、異なる場所に配置でき、優先順位も異なります。 - 重要な設定項目には以下があります。
inventory:インベントリファイルのパスを指定します。remote_user:接続に使用するデフォルトの SSH ユーザを設定します。host_key_checking:SSH ホストキーのチェックを制御します。becomeおよび関連設定:特権昇格を制御します。
ansible-config dump --only-changedコマンドは、デフォルト設定と異なる設定のみを表示するのに便利です。- 設定情報を表示するプレイブックを作成して実行することで、設定変更をテストできます。
--configオプションを使用すると、Ansible コマンドを実行する際に特定の設定ファイルを指定できます。これはテストや、異なるシナリオで異なる設定を使用する必要がある場合に便利です。
Ansible の設定を理解し、カスタマイズできることは、Ansible を独自の特定の環境や要件に合わせるために不可欠です。Ansible を使い続けるうちに、これらの設定を調整して自動化ワークフローを最適化することが多いでしょう。
さまざまなシナリオに対して異なる設定ファイルを作成することで練習してみましょう。たとえば、セキュリティ設定が緩やかなテスト環境用に 1 つの設定を作成し、セキュリティ設定が厳しい本番環境用に別の設定を作成するかもしれません。
host_key_checking を無効にするなどの一部の設定は、テストに便利ですが、セキュリティが最も重要な本番環境では慎重に検討する必要があります。常に、全体的なシステムセキュリティ戦略の一部として Ansible の設定を見直してください。
今後の実験では、これらの設定をより複雑なシナリオで活用し、ロール、動的インベントリ、その他の高度な Ansible 機能と統合する方法を学びます。


