ホームページ  >  記事  >  システムチュートリアル  >  Ansible アーキテクチャと動作原理を理解する

Ansible アーキテクチャと動作原理を理解する

PHPz
PHPzオリジナル
2024-09-02 15:59:59727ブラウズ

Ansible は、マルチノードの公開とリモート タスクの実行をサポートするモデル駆動型の構成マネージャーです。デフォルトでは、SSH がリモート接続に使用されます。管理対象ノードに追加のソフトウェアをインストールする必要はなく、さまざまなプログラミング言語を使用して拡張できます。

1. Ansible の基本アーキテクチャ

Ansible アーキテクチャと動作原理を理解する

上の図は、ansible の基本的なアーキテクチャを示しています。上の図から、次の部分で構成されていることがわかります。

    コア: ansible
  • コア モジュール: これらは ansible に付属するモジュールです
  • 拡張モジュール (カスタム モジュール): コア モジュールだけでは特定の機能を完了できない場合は、拡張モジュールを追加できます
  • プラグイン: モジュール機能の補完を完了
  • Playbook: Ansible のタスク構成ファイル。Playbook 内で複数のタスクを定義し、ansible によって自動的に実行されます
  • 接続プラグイン: ansible は接続プラグインに基づいて各ホストに接続します。ansible は ssh を使用して各ホストに接続しますが、他の接続方法もサポートしているため、接続プラグインが必要です。
  • ホストインベントリ: ansible によって管理されるホストを定義します
2. ansible の動作原理

Ansible アーキテクチャと動作原理を理解するAnsible アーキテクチャと動作原理を理解する

上記は、インターネット上にある 2 つの Ansible の動作原理図です。どちらの図も、基本的にはアーキテクチャ図をベースに拡張したものです。上の写真から理解できます:

1. 管理端末は、ローカル、ssh、zeromq の 3 つの接続方法をサポートしています。デフォルトでは、ssh ベースの接続が使用されます。この部分は、基本アーキテクチャ図の接続モジュールに対応します。 ;

2. ホスト インベントリ (ホスト グループ) は、アプリケーションの種類などに応じて分類できます。管理ノードは、さまざまなモジュール (単一モジュール、単一コマンドのバッチ実行、アドホックと呼ぶことができます) を通じて対応する操作を実装します。

3. 管理ノードは、プレイブックを使用して、Web サービスのインストールとデプロイ、データベース サーバーのバッチ バックアップなど、ある種の機能を実装するための複数のタスクのコレクションを実装できます。 Playbook は、システムが複数のアドホック操作を組み合わせて操作する構成ファイルとして単純に理解できます。

3. Ansible の 7 つのコマンド
ansible をインストールした後、ansible は合計 7 つの命令 (ansible、a​​nsible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault) を提供することがわかりました。ここでは使用方法の部分のみを説明します。詳細な部分は「command -h」メソッドで取得できます。

1. アンシブルリーリー

Ansible はコマンドの中核部分であり、主にアドホック コマンド、つまり単一のコマンドを実行するために使用されます。デフォルトでは、ホスト部分とオプション部分に従う必要があります。デフォルトでモジュールが指定されていない場合は、コマンド モジュールが使用されます。例:

リーリー

ただし、デフォルトのモジュールは ansible.cfg で変更できます。 ansible コマンドのパラメーターは次のように説明されます:

  1. パラメータ:
  2. -a 'Arguments', --args='Arguments' コマンドラインパラメータ
  3. -m NAME, --module-name=NAME 実行モジュールの名前はデフォルトで使用されるため、単一のコマンドのみを実行する場合は、-m パラメータは必要ありません。 🎜>
  4. -i PATH、--inventory=PATH はインベントリ ホスト ファイルへのパスを指定します。デフォルトは /etc/ansible/hosts.
  5. -u ユーザー名、--user=ユーザー名実行ユーザー、現在のユーザーの代わりにこのリモート ユーザー名を使用します
  6. -U --sud-user=SUDO_User sudo を実行するユーザー。デフォルトは root
  7. -k --ask-pass ログイン パスワード、キーベースの認証を想定する代わりに SSH パスワードの入力を求めます
  8. -K --ask-sudo-pass パスワードの入力を求めるプロンプトには sudo を使用します
  9. -s --sudo sudo run
  10. -S --su su コマンドを使用します
  11. -l --list サポートされているすべてのモジュールを表示します
  12. -s --snippet は、スクリプト スニペットを表示するモジュールを指定します
  13. -f --forks=NUM 並列タスクの数。 NUM は整数として指定され、デフォルトは 5 です。 #ansible testhosts -a "/sbin/reboot" -f 10 testhosts グループ内のすべてのマシンを一度に 10 台ずつ再起動します
  14. --private-key=PRIVATE_KEY_FILE 秘密キーのパス。このファイルを使用して接続を確認します
  15. -v --verbose 詳細
  16. all は、ホストによって定義されたすべてのホストに対して を実行します
  17. -M MODULE_PATH, --module-path=MODULE_PATH 実行するモジュールのパス。デフォルトは /usr/share/ansible/
  18. --list-hosts は、このプレイブック ファイルを実行するホストを出力するだけであり、プレイブック ファイル を実際に実行するわけではありません。
  19. -o --1 行の圧縮出力、要約された出力 すべてを 1 行に出力してみます。
  20. -t Directory, --tree=Directory この出力ディレクトリの内容を保存し、結果を各ホスト上のファイルに保存します。
  21. -B バックグラウンド実行タイムアウト
  22. -P バックグラウンドプログラム時間を調査します
  23. -T 秒、--timeout=秒単位の時間
  24. -P NUM、--poll=NUM バックグラウンド作業を数秒ごとにポーリングします。必須 - b
  25. -c 接続、--connection=使用する接続接続タイプ。可能なオプションは、paramiko(SSH)、SSH、およびローカルです。 Local は主に crontab またはスタートアップに使用されます。
  26. --tags=TAGS 指定したタグを持つタスクのみを実行します。 例: ansible-playbook test.yml --tags=copy タグ copy を持つタスクのみを実行します。
  27. --list-hosts は、このプレイブック ファイルを実行するホストを出力するだけであり、プレイブック ファイル を実際に実行するわけではありません。
  28. --list-tasks 実行されるすべてのタスクをリストします
  29. -C, --check は変更される内容をテストするだけで、実際には実行しません。代わりに、考えられる変更を予測しようとします。
  30. --syntax-check スクリプトの構文チェックを実行しますが、実行はしません
  31. -l SUBSET、--limit=SUBSET 選択したホスト/グループ モードをさらに制限します --limit=192.168.0.15 この IP のみを実行します
  32. --skip-tags=SKIP_TAGS これらの値に一致しないタグを持つプレイとタスクのみを実行します --skip-tags=copy_start
  33. -e EXTRA_VARS, --extra-vars=EXTRA_VARS key=value または YAML/JSON として設定される追加変数
  34. #cat update.yml
  35. ---
  36. - ホスト: {{ ホスト }}
  37. リモートユーザー: {{ ユーザー }}
  38. ....
  39. #ansible-playbook update.yml --extra-vars "hosts=vipers user=admin" {{hosts}}、{{user}} 変数を渡します。ホストは IP またはグループ名にすることができます
  40. -l,--limit 指定したホスト/グループでタスクを実行します --limit=192.168.0.10、192.168.0.11 または -l 192.168.0.10、192.168.0.11 これら 2 つの IP でのみタスクを実行します
2. ansible-doc
# ansible-doc -h
Usage: ansible-doc [options] [module...]

该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:

  1. //列出所有已安装的模块
  2. # ansible-doc -l
  3. //查看具体某模块的用法,这里如查看command模块
  4. # 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-playbook

该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。

6、ansible-pull

该指令使用需要谈到ansible的另一种模式---pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;你要在一个没有网络连接的机器上运行Anisble,比如在启动之后安装。这部分也会单独做一节来讲。

7、ansible-vault

ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上 --ask-vault-pass参数,同样需要输入密码后才能正常执行。具体该部分可以参查官方博客。

注:上面七个指令,用的最多的只有两个ansible 和ansible-playbook ,这两个一定要掌握,其他五个属于拓展或高级部分。

以上がAnsible アーキテクチャと動作原理を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。