Ansible は、YAML 言語に基づいてプレイブックを作成するオープンソースの自動運用およびメンテナンス ツールであり、サーバーの構成、デプロイメント、および管理を自動化するために使用できます。
Ansible は通信に SSH プロトコルを使用し、ターゲット サーバーにクライアント ソフトウェアをインストールすることなく、多数のサーバーでバッチ操作を実行できます。Linux、Windows、Mac OS X などを含む複数のオペレーティング システムをサポートしています。Ansible を使用すると、ソフトウェアのインストール、サービスの構成、データのバックアップ、アプリケーションのデプロイなどのさまざまなタスクを自動化できます。モジュール性もサポートしており、プラグインを通じて機能を拡張できます。Ansible は、運用と保守の効率と一貫性を大幅に向上させる、強力かつ柔軟な自動運用および保守ツールです。
1. Ansibleの基本アーキテクチャ
上の図は ansible の基本的なアーキテクチャを示しており、以下の部分から構成されていることがわかります。
-
コア: アンシブル
-
コア モジュール: これらは、ansible に付属するモジュールです。
-
拡張モジュール (カスタム モジュール): コア モジュールだけでは特定の機能を完了できない場合は、拡張モジュールを追加できます。
-
プラグイン:モジュール機能の補完を完了
-
Playbook: ansible のタスク構成ファイル。Playbook 内で複数のタスクを定義し、ansible によって自動的に実行されます。
-
接続プラグイン: Ansible は接続プラグインに基づいて各ホストに接続します。ansible は ssh を使用して各ホストに接続しますが、他の接続方法もサポートしているため、接続プラグインが必要です。
-
ホスト インベントリ: ansible によって管理されるホストを定義します。
2. Ansible の仕組み
上は、インターネット上にある Ansible の動作原理を示す 2 つの図ですが、どちらの図も基本的にはアーキテクチャ図をベースに拡張したものです。上の図から理解できます。
1. 管理端末は、管理対象端末への接続に local、ssh、zeromq の 3 つの接続方法をサポートしています。デフォルトでは、ssh ベースの接続が使用されます。この部分は、基本アーキテクチャ図の接続モジュールに相当します。
2. ホスト インベントリ (ホスト グループ) はアプリケーションの種類などに応じて分類でき、管理ノードはさまざまなモジュール (単一モジュール、単一コマンドのバッチ実行、アドホックと呼ぶことができます) を通じて対応する操作を実装します。
3. 管理ノードは、Playbook を使用して複数のタスクのコレクションを実装し、Web サービスのインストールと展開、データベース サーバーのバッチ バックアップなど、ある種の機能を実装できます。Playbook は、システムが複数のアドホック操作を組み合わせて操作する構成ファイルとして単純に理解できます。
3. ansibleの7つのコマンド
ansible をインストールした後、ansible が合計 7 つの命令 (ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault) を提供していることがわかりました。ここでは使用方法の部分のみを説明します。詳細な部分は「command -h」メソッドで取得できます。
1、アンシブル
[root@localhost ~]# ansible -h
Usage: ansible [options]
ansible はコマンドの中核部分であり、主にアドホック コマンド、つまり単一のコマンドを実行するために使用されます。デフォルトではホスト部とオプション部に従う必要があり、デフォルトでモジュールが指定されていない場合はコマンドモジュールが使用されます。例:
[[email protected] ~]# ansible 192.168.0.102 -a 'date'
192.168.0.102 | success | rc=0 >>
Tue May 12 22:57:24 CST 2015
ただし、デフォルトで使用されるモジュールは ansible.cfg で変更できます。ansible コマンドのパラメーターについては、次のように説明します。
2、ansible- doc
ansible-doc -h
Usage: ansible-doc [options] [module...]
このコマンドは、モジュール情報を表示するために使用されます。一般的に使用されるパラメータには、次のように -l および -s が含まれます。
// インストールされているすべてのモジュールをリストする
# ansible-doc -l
//特定のモジュールの使用法を表示します。ここにコマンド モジュールがあります
# ansible-doc -s command
3、ansible- galaxy
ansible-galaxy -h
Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...
ansible-galaxy コマンドは、https://galaxy.ansible.com/ サイトからサードパーティの拡張モジュールを簡単にダウンロードするために使用され、centos の yum、python の pip または easy_install に似ていることが視覚的に理解できます。以下の例:
[root@localhost ~]# ansible-galaxy install aeriscloud.docker
- downloading role 'docker', owned by aeriscloud
- downloading role from https://github.com/AerisCloud/ansible-docker/archive/v1.0.0.tar.gz
- extracting aeriscloud.docker to /etc/ansible/roles/aeriscloud.docker
- aeriscloud.docker was installed successfully
これにより aeriscloud.docker コンポーネントがインストールされます。前部の aeriscloud は galaxy 上でモジュールを作成したユーザー名で、後部はそのモジュールに対応します。実際のアプリケーションでは、txt または yml ファイルを指定して、複数のコンポーネントをダウンロードしてインストールすることもできます。この部分は公式ドキュメントに記載されています。
4、ansible-lint
ansible-lint は Playbook の構文をチェックするためのツールです。使用方法は ansible-lint playbook.yml です。
5、ansible プレイブック
このコマンドは最も一般的に使用されるコマンドです。プレイブック ファイルを読み取り、対応するアクションを実行します。これについては後で説明します。
6、ansible-pull
この命令を使用するには、ansible の別のモードであるプル モードが必要です。これは、通常使用するプッシュ モードとはまったく逆であり、次のシナリオに適しています。非常に高いスレッドを使用すると、依然として時間がかかります。起動時にインストールした後など、ネットワーク接続のないマシンで Anisble を実行する必要があります。この部分についても、別のセクションで説明します。
7、ansible-vault
ansible-vault は主に、構成ファイルに機密情報が含まれており、それを見られたくない場合に使用されます。Vault は、構成ファイルの暗号化/復号化に役立ちます。これは高度な使用法です。
主に Playbook でパスワードやその他の変数を設定する場合、このコマンドを使用して暗号化できます。このようにして、cat を通じて表示されるのはパスワード文字列ファイルになります。編集するときは、事前に設定されたパスワードを入力して開く必要があります。この種の Playbook ファイルを実行する場合は、 --ask-vault-pass
パラメータを追加し、正常に実行する前にパスワードを入力する必要があります。
出典: 361way.com