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

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

Sep 02, 2024 pm 03:59 PM
linux Linuxチュートリアル レッドハット Linuxシステム Linuxコマンド Linux 認定 レッドハットリナックス Linuxビデオ

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Linuxアーキテクチャ:5つの基本コンポーネントを発表します Linuxアーキテクチャ:5つの基本コンポーネントを発表します Apr 20, 2025 am 12:04 AM

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

GITの倉庫アドレスを確認する方法 GITの倉庫アドレスを確認する方法 Apr 17, 2025 pm 01:54 PM

gitリポジトリアドレスを表示するには、次の手順を実行します。1。コマンドラインを開き、リポジトリディレクトリに移動します。 2。「git remote -v」コマンドを実行します。 3.出力と対応するアドレスでリポジトリ名を表示します。

Apr 16, 2025 pm 07:39 PM

NotePadはJavaコードを直接実行することはできませんが、他のツールを使用することで実現できます。コマンドラインコンパイラ(Javac)を使用してByteCodeファイル(filename.class)を生成します。 Javaインタープリター(Java)を使用して、バイトコードを解釈し、コードを実行し、結果を出力します。

コードを書いた後に崇高に実行する方法 コードを書いた後に崇高に実行する方法 Apr 16, 2025 am 08:51 AM

Sublimeでコードを実行するには6つの方法があります。ホットキー、メニュー、ビルドシステム、コマンドライン、デフォルトビルドシステムの設定、カスタムビルドコマンド、プロジェクト/ファイルを右クリックして個々のファイル/プロジェクトを実行します。ビルドシステムの可用性は、崇高なテキストのインストールに依存します。

Linuxの主な目的は何ですか? Linuxの主な目的は何ですか? Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

GITソフトウェアのインストール GITソフトウェアのインストール Apr 17, 2025 am 11:57 AM

GITソフトウェアのインストールには、次の手順が含まれています。インストールパッケージをダウンロードしてインストールパッケージを実行して、インストール構成gitインストールgitバッシュ(Windowsのみ)を確認します

Laravelインストールコード Laravelインストールコード Apr 18, 2025 pm 12:30 PM

Laravelをインストールするには、これらの手順を順番に進みます。コンポーザー(MacOS/LinuxとWindows用)インストールLaravelインストーラーをインストールします。

重要なgit構成グローバルプロパティを設定する方法 重要なgit構成グローバルプロパティを設定する方法 Apr 17, 2025 pm 12:21 PM

開発環境をカスタマイズするには多くの方法がありますが、グローバルGit構成ファイルは、ユーザー名、電子メール、優先テキストエディター、リモートブランチなどのカスタム設定に使用される可能性が最も高いものです。グローバルGIT構成ファイルについて知っておくべき重要なことは次のとおりです。

See all articles