はじめに
Ansibleは、Infrastructure as Code(IaC)を可能にするオープンソースのサーバー管理および自動化ソフトウェアです。このツールを使用すると、アプリケーションの展開、プロビジョニング、および構成管理を簡単かつ効果的に行うことができます。
Ansible Automation Hubは、RedHatおよび認定パートナーからモジュールを収集します。 phoenixNAPは、BareMetalCloudプラグインを備えたAnsibleの信頼できるコンテンツコレクションの一部であることを誇りに思っています。 Ansibleが導入したこの概念により、追加のライブラリとしてクラウドプロバイダーをインストールできます。
このガイドの手順に従って、 phoenixNAPBMCAnsibleモジュールをインストールします 関連するプレイブックの使用方法を学びます。
前提条件
- 制御マシンにインストールされたAnsible
- コントロールマシンにインストールされたPython(デフォルトで利用可能)
PNAPBMCAnsibleモジュールを使用する利点
このIaCツールは、お客様がベアメタルクラウドサーバーをプロビジョニングし、シンプルなYAMLスクリプトを使用して他のタスクを実行できるように設計されています。 プレイブックと呼ばれます。不変のプロビジョニングを使用して、サーバーの作成を効率的に自動化できるようになりました。 ITプロセスを自動化する利点に加えて、別の利点は、同じコードを再実行して、不要な変更があった場合にサーバーを元の状態に戻す機能です。
このモデルには、マスターマシンとスレーブマシンはありません。 1台のマシンを使用してファイルをプッシュします。つまり、1つまたは複数のリモートホストでスクリプトを実行します。メインサーバーから情報を取得するエージェントは、個々のノードにはありません。ベアメタルクラウドモジュールは、プレイブックを実行するためにSSHを必要としません。
認定プラグインになることで Red Hat Ansible Automation Hubでは、BMCモジュールのインストールプロセスは迅速で、単一のAnsibleコマンドを使用して完了します。 。次に、実行する自動化ジョブの説明を含むYAMLコードを含むスクリプトを実行するようにAnsibleに指示できます。モジュールは、指定した最終結果を正しい順序で確実に達成します。
Ansible Automation Hubのコンテンツは、RedHatとそのパートナーによってサポートされています。このようにして、最も要求の厳しい環境でも、モジュールが期待に応えられるので安心できます。
BMCAnsibleモジュールのインストール
BMC Ansibleプラグインをインストールする前に、Pythonのリクエストが必要です。 あなたのマシンのパッケージ。さまざまな種類のHTTPリクエストを送信できます。
リクエストをインストールするには 、次のように入力します:
pip install requests
次に、Ansibleコマンドを実行して、phoenixNAPBMCモジュールをインストールします。
ansible-galaxy collection install phoenixnap.bmc
インストールが完了したら、次のコマンドでモジュールのドキュメントを表示します。
ansible-doc phoenixnap.bmc.server
AnsibleBMCプラグインはAPIリクエストに依存しています。すべてのBMCAPIリクエストは、phoenixNAPデベロッパーポータルで文書化されています。
認証用の資格情報ファイルを作成する
承認サーバーで正常に認証するには、クライアント資格情報付与タイプを使用します。
ホームディレクトリに、ディレクトリ .pnapを作成します。 およびconfig.yaml その中のファイル。
ファイルには次の情報が含まれている必要があります:
clientId: myClientId
clientSecret: myClientSecret
myClientIdを置き換えます およびmyClientSecret あなたのIDと秘密を使って。
AnsiblephoenixNAPBMCプレイブック
Ansibleプレイブックの作成には特別なコーディングスキルは必要なく、利用可能なすべてのBMCAPIをカバーしています。これらのスクリプトは、構成ファイルの作成時に使用される単純なシリアル化言語であるYAMLで記述されています。 Ansibleは、サーバーの実際の状態をチェックし、それらをプレイブックの一連の指示と比較することで機能します。
状態が定義された最終結果と一致しない場合、モジュールはスクリプトのリソースモデルに従って、設定された目標を達成します。
プレイブックを複数回実行すると、モジュールは追加のタスクを実行しません。 BMCサーバーの実際の状態がスクリプトの目標に対応すると、スクリプトを複数回実行でき、モジュールはタスクを実行しません。
BMCプレイブックの実行方法
プレイブックの名前は、スクリプトの機能を示しています。たとえば、 playbook_power_off.yml 1つ以上のサーバーをオフにします。
プレイブックを実行するには、次の構文を使用します:
ansible-playbook playbook_name.yml
したがって、サーバーをリセットするには、次のように入力します。
ansible-playbook playbook_reset.yml
BMCプレイブックの例
以下で提供するYAMLプレイブックの例は互いに似ています。違いは、達成したいサーバーの状態です。他のファイルとわずかに異なる唯一のファイルは、サーバーを作成するためのスクリプトです。
すべてのプレイブックには、1つ以上のホスト名が含まれている必要があります またはserver_ids 、および client_id およびclient_secret 。推奨される方法は、〜/ .pnap / config.yamlに値を入力することです。 各プレイブックではなくファイル。
サーバーの作成
プレイブックの名前: playbook_create.yml
- name: Create new servers for account
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
location: PHX
os: ubuntu/bionic
type: s1.c1.medium
state: present
ssh_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
プロビジョニング解除サーバー
プレイブックの名前: playbook_deprovision.yml
- name: reset servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: absent
サーバーの電源を切る
プレイブックの名前: playbook_power_off.yml
- name: power on servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: powered-off
パワーオンサーバー
プレイブックの名前: playbook_power_on.yml
- name: power on servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: powered-on
サーバーの再起動
プレイブックの名前: playbook_reboot.yml
- name: reset servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: rebooted
サーバーのリセット
プレイブックの名前: playbook_reset.yml
- name: reset servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
ssh_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
state: reset
シャットダウンサーバー
プレイブックの名前: playbook_shutdown.yml
この例では、 server_idsを使用しました ホスト名の代わりに 。
- name: shutdown servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
server_ids:
- 5eda71ef674cf47bd2599cfa
state: shutdown