Ansible は、タスク実行とアプリケーションデプロイメントを自動化して IT インフラストラクチャを実装するために使用できるオープンソースの構成および管理ツールです。
OOS とはを使用すると、テンプレートを使用して Alibaba Cloud サービスを管理し、自動化された O&M を実装できます。続行する前に、OOS の基本的な機能と使用上の注意をよく理解しておいてください。このトピックでは、Ansible を使用して OOS O&M テンプレートを作成する方法と、Ansible を使用して作成したテンプレートを実行して Alibaba Cloud サービスを管理する方法について説明します。
概要
このトピックでは、テンプレートの作成とテンプレートの実行のための Ansible プレイブックについて個別に説明します。これにより、YAML 形式で構成を宣言する方法を学ぶことができます。提供されている例を参照して、Ansible プレイブックを実行し、OOS テンプレートを作成および実行できます。
Ansible には、ali_oos_template、ali_oos_template_info、ali_oos_execution、ali_oos_execution_info の 4 つのモジュールが含まれています。次のシナリオで 4 つのモジュールを使用できます。
モジュール | シナリオ |
ali_oos_template | テンプレートを作成する。 |
テンプレートを更新する。 | |
テンプレートを削除する。 | |
ali_oos_template_info | テンプレートを照会する。 |
ali_oos_execution | テンプレートを実行する。 |
テンプレートの実行をキャンセルする。 | |
テンプレートの実行を削除する。 | |
操作を承認する。 | |
ali_oos_execution_info | テンプレートの実行を照会する。 |
前提条件
Ansible がインストールされていること。Ansible をインストールするには、次の手順を実行します。
1. 次のコマンドを実行して Ansible をインストールします。
sudo yum install ansible
詳細については、「Ansible のインストール」をご参照ください。
2. 次のコマンドを実行して、インストールされている Ansible のバージョンを表示します。
ansible -version
3. 次のコマンドを実行して、Alibaba Cloud 用の Ansible モジュールをインストールします。
sudo pip install ansible_alicloud
4. オプション。Alibaba Cloud 用の Ansible モジュールのバージョンがビジネス要件を満たしていない場合は、次のコマンドを実行して Ansible モジュールのバージョンを更新できます。
sudo pip install footmark
sudo pip install ansible_alicloud
5. 次のコマンドを実行して、Alibaba Cloud リソースにアクセスするための AccessKey ペアを構成します。
export ALICLOUD_ACCESS_KEY="your_accesskey"
export ALICLOUD_SECRET_KEY="your_accesskey_secret"
詳細については、「AccessKey ペアを取得する」をご参照ください。
OOS プレイブック
1. テンプレートを作成する。
- name: OOS テンプレートを作成する
ali_oos_template:
alicloud_region: '{{ alicloud_region }}'
template_name: '{{ template_name }}'
content: '{{ content }}'
register: create_template
2. テンプレートを照会する。
- name: OOS テンプレートを取得する
ali_oos_template_info:
alicloud_region: '{{ alicloud_region }}'
name_prefix: '{{ name_prefix }}'
register: get_template
3. テンプレートを削除する。
- name: OOS テンプレートを削除する
ali_oos_template:
state: absent
alicloud_region: '{{ alicloud_region }}'
template_name: '{{ template_name }}'
4. テンプレートを更新する。
- name: OOS テンプレートを更新する
ali_oos_template:
content: '{{ content }}'
alicloud_region: '{{ alicloud_region }}'
template_name: '{{ template_name }}'
5. テンプレートを実行する。
- name: 実行を開始する
ali_oos_execution:
alicloud_region: '{{ alicloud_region }}'
template_name: '{{ template_name }}'
safety_check: Skip
parameters:
Status: '{{ status }}'
register: start_execution
6. テンプレートの実行をキャンセルする。
- name: 実行をキャンセルする
ali_oos_execution:
state: cancel
alicloud_region: '{{ alicloud_region }}'
execution_id: '{{ execution_id }}'
register: cancel_execution
7. テンプレートの実行を照会する。
- name: 実行を取得する
ali_oos_execution_info:
alicloud_region: '{{ alicloud_region }}'
name_prefix: '{{ name_prefix }}'
register: get_executions
8. テンプレートの実行を削除する。
- name: 実行を削除する
ali_oos_execution:
state: absent
alicloud_region: '{{ alicloud_region }}'
execution_id: '{{ execution_id }}'
register: delete_execution
9. 操作を承認する。
- name: 実行に通知する
ali_oos_execution:
state: notify
notify_type: Approve
alicloud_region: '{{ alicloud_region }}'
execution_id: '{{ execution_id }}'
register: notify_execution
その他のパラメーターが必要な場合は、提供されているサンプルパラメーターを参照してください。
Ansible プレイブックを実行して OOS 操作を管理する
次のセクションでは、Ansible プレイブックを実行して OOS 操作を管理する例を示します。次の手順を実行してテンプレートを作成し、作成したテンプレートを実行します。ビジネス要件に基づいてパラメーターを置き換えることができます。
1. alicloud_describe_instances.yml という名前のファイルを作成し、編集モードで開きます。
vi alicloud_describe_instances.yml
2. 編集モードで、次のプレイブックコードを alicloud_describe_instances.yml ファイルにコピーします。
---
- name: テンプレートの作成と実行をテストする
hosts: localhost
remote_user: root
tasks:
- name: OOS テンプレートを作成する
ali_oos_template:
alicloud_region: 'cn-hangzhou'
template_name: 'test-ansible-template'
content: '{"Description": "サンプルテンプレート。特定のステータスのインスタンスを記述します。", "FormatVersion": "OOS-2019-06-01", "Parameters": {"Status": {"Description": "(必須) Running または Stopped", "Type": "String"}}, "Tasks": [{"Name": "describeInstances", "Action": "ACS::ExecuteAPI", "Description": {"zh-cn": "desc", "en": "desc-en"}, "Properties": {"Service": "ECS", "API": "DescribeInstances", "Parameters": {"Status": "\{\{ Status \}\}"}}, "Outputs": {"InstanceIds": {"Type": "List", "ValueSelector": "Instances.Instance[].InstanceId"}}}], "Outputs": {"InstanceIds": {"Type": "List", "Value": "\{\{ describeInstances.InstanceIds \}\}"}}}'
register: create_template
- name: ステータス別にインスタンスを記述する
ali_oos_execution:
alicloud_region: 'cn-hangzhou'
template_name: 'test-ansible-template'
safety_check: Skip
description: Ansible からの実行をテストします。
parameters:
Status: 'Running'
register: start_execution
3. ファイルを保存して編集モードを終了します。
4. Ansible プレイブックを実行してテンプレートを作成および実行します。
ansible-playbook alicloud_describe_instances.yml
5. 実行結果を表示します。
5.1. テンプレートの実行結果を表示して、テンプレートが正常に実行されたかどうかを確認します。
5.2. 結果で実行が成功した場合は、OOS コンソール にログインして、Ansible を使用して実行されたタスクが有効になっているかどうかを確認できます。