詳細なAnsibleプレイブック

詳細なAnsibleプレイブック

プレイブックは、1つ以上のプレイで構成されるファイルです。プレイは、特定のホストまたはホストグループに対して実行されるタスクの順序付きセットです。各プレイブックには、次の2つの部分が含まれている必要があります。

ホスト:プレイブックを実行しているホストのグループ

タスク:ホストで実行する必要のあるタスク

これらの2つの必須オプションに加えて、次のようないくつかのオプションオプションもプレイに含める必要があります。

name:プレイの名前。プレイの実行中に、実行プロセス中に表示されます。

なる:構成ファイル内のbecomeの役割と同じで、特権の昇格に使用されます。構成ファイルで特権の昇格が無効になっている場合、特定のプレイで特権の昇格を使用する場合は、プレイにbecomeを追加できます。

プレイブックはyaml形式で記述されており、通常はyml拡張子で保存されます。yaml形式はインデントにスペースを使用します。スペースの数に特別な要件はありませんが、次の点に注意する必要があります。

  • 同じレベル内の要素は同じインデントを使用する必要があります。
  • サブアイテムの場合、インデントは親アイテムよりも大きくする必要があります

プレイブックを書く

it@workstation:~/ansible$ vim test.yml
it@workstation:~/ansible$ cat test.yml
---
- name: Install Apache
  hosts: servera
  tasks:
    - name: Install apache httpd
      apt:
        name: apache2
        state: present
    - name: Copy using inline content
      copy:
        content: Welcome to
        dest: /var/www/html/index.html
    - name: Start apache service
      service:
        name: apache2
        state: started
        enabled: yes

Playbookは---で始まります。これは、ファイルの先頭を示すために使用されます。

2行目の名前は演劇の名前です。

内のホスト三行目はプレイが実行されるホストを示しています。

4行目のタスクは、プレイによって実行される特定のタスクを表しています。

インデントにより、タスクが3つの部分、つまり3つのモジュールに分割されていることがわかります。各モジュールは、モジュールの名前を示す名前で開かれます。名前はオプションのオプションですが、Anと記述することをお勧めします。モジュールによって実行されるタスクの説明、および名前の内容は、プレイブックがこのモジュールを実行するときに、モジュールの実行中に表示されます。

以下の名前はモジュールの名前です。このプレイのタスクには3つのモジュールがあります。

apt:ソフトウェアのインストールに使用

コピー:ファイルまたはコンテンツをコピーするために使用されます

サービス:サービスの開始、サービスの再起動など、サービスの操作に使用されます。

モジュールに関する詳細は、ansible-docから入手できます。

ansible-doc-lを介してすべてのモジュール一覧表示できます

t@workstation:~/ansible$ ansible-doc -l
a10_server                                    Manage A10 Networks AX/SoftAX/Thu...
a10_server_axapi3                             Manage A10 Networks AX/SoftAX/Thu...
a10_service_group                             Manage A10 Networks AX/SoftAX/Thu...
a10_virtual_server                            Manage A10 Networks AX/SoftAX/Thu...
aci_aaa_user                                  Manage AAA users (aaa:User)      
... ... ... ...
... ... ... ...

リストされているコンテンツが多すぎるため、grepでフィルタリングできます。たとえば、aptに関連するモジュールを検索したい

it@workstation:~$ ansible-doc -l | grep apt
apt                                                           Manages apt-packages             
apt_key                                                       Add or remove an apt key         
apt_repo                                                      Manage APT repositories via apt-r...
apt_repository                                                Add and remove APT repositories  
apt_rpm                                                       apt_rpm package manager          
fortios_switch_controller_security_policy_captive_portal      Names of VLANs that use captive p...
na_ontap_qos_adaptive_policy_group                            NetApp ONTAP Adaptive Quality of ...
na_ontap_ucadapter                                            NetApp ONTAP UC adapter configura...
nios_naptr_record                                             Configure Infoblox NIOS NAPTR rec...
skydive_capture                                               Module which manages flow capture...
vmware_guest_network                                          Manage network adapters of specif...                            

ansible-docModule_Nameからモジュール関連のヘルプ手順入手する

it@workstation:~$ ansible-doc apt
> APT    (/usr/lib/python3/dist-packages/ansible/modules/packaging/os/apt.py)

        Manages `apt' packages (such as for Debian/Ubuntu).

  * This module is maintained by The Ansible Core Team
OPTIONS (= is mandatory):

- allow_unauthenticated
        Ignore if packages cannot be authenticated. This is useful for
        bootstrapping environments that manage their own apt-key setup.
        `allow_unauthenticated' is only supported with state:
        `install'/`present'
        [Default: no]
        type: bool
        version_added: 2.1
... ... ... ...
... ... ... ...

プレイブックを実行する

it@workstation:~/ansible$ ansible-playbook test.yml 
BECOME password: 

PLAY [Install Apache] ******************************************************************************

TASK [Gathering Facts] *****************************************************************************
ok: [servera]

TASK [Install apache httpd] ************************************************************************
changed: [servera]

TASK [Copy using inline content] *******************************************************************
changed: [servera]

TASK [Start apache service] ************************************************************************
ok: [servera]

PLAY RECAP *****************************************************************************************
servera                    : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

我々が設定されているのでなって、我々は実行するときになって、パスワードを入力するように求められます。

ここでは、前に言ったことを確認できます。実行中にプレイの名前が表示され、現在実行中のプレイがわかります。

各プレイには、事実情報を取得するというデフォルトのタスクがあり、コンピューターのシステム情報は事実情報に保存されます。

そして、劇中で定義された3つのタスクがあります。タスクが実行されると、現在実行タスクと実行状態の名前が表示されます。それがあればOK、それはシステムステータスが変更されていないことを意味します。それがされている場合は変更され、それをシステムのステータスが変更されたことを意味します。

最後に、プレイブックの実行結果、変更された数、失敗した数、スキップされた数などの要約があります。

おすすめ

転載: blog.51cto.com/mageedu/2663666