、ansibleプロフィール
ansibleは、バルクのシステム構成、バッチ展開、実行するバッチコマンドなどを達成するために一緒に操作および保守ツール(人形、cfengineの、シェフ、FUNC、ファブリック)の利点の数をもたらし、自動運転やメンテナンスツールによって書かれたPython言語であります機能。その創設者、マイケルDeHaan(コブラーとソフトウェアのfuncが)、彼は3月9日、2012年にansible 0.01バージョンをリリースしました。2015年10月17日には、RedHatので買収したと発表しました。
二、ansible機能
1、ないクライアントは、ちょうどSSH、Pythonのバージョン2.6.6が上記の推奨されているのpythonをインストールしていません
基礎となるプロトコル(WindowsベースのPowerShellの)に基づいて、通信のOpenSSH、SSHに基づく2、
3、およびSSHは、公開鍵と秘密鍵認証やパスワード認証により、システムアカウントので、パスワード認証をサポートしているので、全体のプロセスは簡単で、便利で安全です。
4、Windowsのためのサポートが、唯一の経営側がWindows、Linuxのシステム管理側がサポートしなければなりません
5、モジュラー:特定のタスクを完了するために、特定のモジュールを呼び出します
6は、タスクのスケジューリングが脚本をサポートしています(同様のシェルスクリプト)
7、冪等:タスクを再度実行し、N回の実施の効果と同じ、持ち込ま不測の事態の結果を繰り返さないでください
8、あなたは(他の言語を呼び出すことができますPythonライブラリ)任意のプログラミング言語モジュールを使用することができます
9、YAMLフォーマット、レイアウト作業は、豊富なデータ構造をサポートしています
三、ansibleはどのように動作しますか?
Ansibleどのクライアントは、基盤となる通信システムのソフトウェアに依存しすぎ、WindowsベースのLinuxベースのシステムのOpenSSHの通信は、ansibleによって管理ノード内の各アプリケーションモジュールの命令ツールプッシュを呼び出すことにより、クライアントは、Linuxシステムでなければなりません管理、ユーザ認証をPowerShellのありません実行を終了し、自動的に実装した後に生成された一時ファイルを削除することができました。
四、ansible構図
Ansible主なコンポーネントは次のとおりです。
ANSIBLE-プレイブック:タスクのスクリプト(タスクのセット)は、タスクのスケジューリングがansibleセットプロファイルを定義している、そこに実行ansibleため、通常はYAMLファイル形式のJSON
INVENTORY:在庫管理ansibleホストは、/ etc / ansible /ホスト
モジュール:ansible執行機能モジュールはもちろん、あなたもカスタマイズすることができ、構築されたコアモジュールの大部分をコマンド
プラグイン:モジュール、プラグ型コネクタ、プラグ・ループ、可変プラグを補充は、フィルタインサートのように、関数が使用されていません
API:アプリケーション・プログラムは、サードパーティのプログラミング・インタフェースを求めて
ANSIBLE:組み合わせINVENTORY、API、モジュールは、緑色のボックスをプラグイン、コアインプリメンテーションツールであるansibleコマンドツール、として理解することができます
ansibleコマンド出典:
ユーザ、一般ユーザ、システム管理者、すなわち
CMDB(構成管理データベース)API呼び出し
パブリック/プライベートクラウドAPI呼び出し
ユーザー---> ansible-脚本----> ansible
次の二つの管理を実現するためにansible方法を使用します。
アドホックコマンドansibleすなわち、主に一時的なコマンドのシーンのために
大規模プロジェクトのシーンは、長期的な計画のためにansible、脚本が主に使用されている計画、前提の必要性
ansible-ハンドブック手順(スクリプト)を実行:
Ansible-ハンドブックライト振り付けたタスクセット
ansible-ハンドブックansibleコマンドによって1つずつのコマンド分割タスクセットは、所定の規則に従って一つずつ実行
:ansibleメイン操作対象
HOSTSホスト
NETWORKINGネットワーク設備
五、ansibleインストール
1、rpmパッケージのインストール:EPELソース
YUM ansible -yをインストール
2、コンパイルしてインストールします
2.1、コンパイルに必要な依存関係をインストール
YUMのpython-Jinja2のPyYAMLとのpython-paramikoのpython-バベルのpython-暗号をインストール-y
2.2、ダウンロード元、エキスソースパッケージ
wgetのhttps://releases.ansible.com/ansible/ansible-latest.tar.gz タールXF ansible-latest.tar.gz
2.3、解凍するディレクトリを入力した後、コンパイルと実行がsetup.py installを
CDのansible-2.9.0 python setup.pyビルド Pythonはsetup.py installを
2.4 ansibleプロファイルディレクトリを作成し、適切なディレクトリにファイルをコピーします
MKDIRは/ etc / ansible CPの例-r / *の/ etc / ansible
3、gitの道
gitのクローンgitの://github.com/ansible/ansible.git --recursive CD ./ansible ソース./hacking/env-setu
4、ピップのインストール
4.1、Pythonのパッケージ管理ツールのピップをインストールして、Pythonの開発ライブラリ、依存関係とansible
YUMのpython-PIPのpython-develのインストール yumのGCCのglibc-develのzibl-develのRPM-bulidのopenssl-develのインストール
説明:ピップのpythonがインストールされているパッケージマネージャ、同様のyumを
4.2、ピップansibleインストール
ピップ--upgradeピップをインストール ピップansible --upgradeをインストール
説明:YUMインストールピップデフォルトでは、最新バージョンではありません最初の更新ピップので、
4つの取り付けオプションがインストールされ、インストールするために好きなよう上記の、我々はansible --versionは、インストールが成功したかどうかを判断します
六、ansible関連文書
1、設定ファイル
メインの設定ファイル、設定ansible動作特性を/etc/ansible/ansible.cfg
の/ etc / ansible /ホストホストリスト
の/ etc / ansible /役割/ロールストアディレクトリ
2、ansibleプログラム文書
/ usr / binに/ ansibleメインプログラム、暫定オーダー実行ツール
/ usr / binに/ ansible-docのコンフィギュレーションファイルを表示、モジュールは、ツールが用意されています
/ usr / binに/ ansible-銀河のダウンロード/アップロードコードまたはモジュールプラットフォームの公式ウェブサイトの優れた役割
/ usr / binに/ ansiable-脚本カスタマイズされた自動化タスク、スケジュールスクリプトツール
/ usr / binに/ ansibleプルリモートコマンド実行ツール
/ usr / binに/ ansible・ボールトファイル暗号化ツール
端末インタフェースインプリメンテーションツールでは/ usr / binに/ ansibleコンソールベースのユーザインタラクション
七、ホストリスト目録
ホスト・オペレーティング・バルク用ansible主な機能は、簡単なパケットであってもよいホストの一部を使用するファイルリスト内のホスト名、デフォルトのホストの/ etc / ansible / hostsファイルのリスト。
#これは、デフォルトansible「ホストのファイルです。 # #これは、/ etc / ansible /ホストの中に生きるべき # # - コメントは「#」文字で始まります # - 空白行は無視されます。 # - ホストのグループは、[ヘッダー]の要素によって区切られ # - あなたはホスト名またはIPアドレスを入力することができます # - Aのホスト名/ IP複数のグループのメンバーになることができます #例1:グループ解除ホストは、任意のグループヘッダーの前に指定します。 ## green.example.com ## blue.example.com ## 192.168.100.1 ## 192.168.100.10 #例2:「Webサーバ」グループに属するホストの集合 ## [Webサーバ] ## alpha.example.org ## beta.example.org ## 192.168.1.100 ## 192.168.1.110 #あなたが指定することができ、パターン、次の複数のホストを持っている場合 このような#それら: WWW ## [001:006] .example.comと #例3:「dbservers」グループ内のデータベースサーバの集合 ## [dbservers] ## ## db01.intranet.mydomain.net ## db02.intranet.mydomain.net ## 10.25.1.56 ## 10.25.1.57 #ここでは、ホスト範囲のもう一つの例だ、この時間は何も存在しません #リード0: ## DB- [99:101] -node.example.com
説明:私たちのいくつかの例には/ etc / ansible / hostsファイルは、ホストリスト、我々はホストのリストを定義し、それを与えられた例を参照することができますを定義するには、の/ etc / ansible / hostsファイルには、括弧の文字でスタイルINIファイルを、次のグループ化されていないホストは、最初の一つ以上の括弧内に定義されている任意の基、前ヘッダを指定ステップと、グループ名が同時にホスト異なる複数のグループに統合されてもよいです。括弧でグループ化するために、次にブラケットと次との間に、ブラケットの下の対応するホスト書き込み、グループ名の必要性を示します。我々は指定されたパターンに従うように複数のホストを持っている場合、我々は、WWW [001:006]のような複数のホスト書くことができます.example.comと、www.001.example.com、www.002.example.comを表し.. ..www.006.example.com、私は私たちの例をサンプリングするオーバー見て、私たちは彼らの実際の状況に応じてホストのリストを定義することができると信じています。ターゲットホストがデフォルト以外のSSHポートを使用する場合はさらに、それはまた、ホスト名の後にコロンプラスポート番号の使用を示すことができます。
例:
ntp.magedu.com [Webサーバ] www1.magedu.com:2222 www2.magedu.com [dbservers] db1.magedu.com db2.magedu.com db3.magedu.com [websrvs] WWW [01:100] .example.comの [dbsrvs] DB-【:F] .example.comの
八、ansibleメインの設定ファイルの記述
私たちは、デフォルトのまま通常/etc/ansible/ansible.cfg ansibleメインの設定ファイルは、それを修正しません。
[デフォルト] #inventory =の/ etc / ansible /ホスト#ホストリストの設定ファイル #library =を/ usr / share / my_modules /#ライブラリファイル格納ディレクトリ リモートホストのディレクトリに保存されている#remote_tmp = $ HOME / .ansible / tmpに#PY、一時コマンドファイル 暫定注文#local_tmp =実行するマシンの$ HOME / .ansibleを/ tmpディレクトリ# 同時の#forks = 5#デフォルト数 #sudo_user =ルート#sudoのユーザのデフォルト 各実行ansible sshコマンドでパスワードを依頼するかどうかを#ask_sudo_pass =真# #ask_pass =真 #remote_port = 22 #host_key_checking = Falseの#対応するサーバーhost_keyをチェックし、お薦めアンコメント #開き、log_path =の/ var /ログ/ ansible.log#ログファイル デフォルトモジュール#module_name =コマンド#
ansibleの導入、設置、我々は、このソフトウェアの魅力の下ansible、感情についてのいくつかのホストを設定するために使用しようとしているプロファイルの基本的な説明を理解します
まず、我々はansibleインストール、およびホストリストを設定したいすべての上記のインストールおよびホストのリストここでは詳述されていないを設定する方法について説明します。
ホストリストを定義します。
[Websers] 192.168.0.128 192.168.0.218 [appsers] 192.168.0.217
注:私は、3台の仮想マシンが3台のサーバをシミュレート使用し、デフォルトのポートSSHポート22、そのsshのポートを指定しません
ansibleコマンドの使用を見ます
使用方法:ansible <ホストパターン> [オプション] ホストのセットに対して単一のタスク「脚本」を定義し、実行します オプション: -a MODULE_ARGS、--args = MODULE_ARGS モジュールの引数 --ask-ボールトパスは、ボールトパスワードの入力を求めます -B SECONDS、--background = SECONDS X秒後に失敗し、非同期で実行 (デフォルト= N / A) -Cは、任意の変更を--checkことはありません。代わりに、いくつかを予測してみてください 発生する可能性があり、変更の -Dは、(小)ファイルとテンプレートを変更する際--diff表示します これらのファイルの違い。--checkで素晴らしい作品 その-e EXTRA_VARS、--extra- = EXTRA_VARS キー=値やYAML / JSON、かのように追加の変数を設定します で、ファイル名の先頭に追加@ -f FORKS、--forks =フォーク 使用する並列プロセスの数を指定します (デフォルト= 5) -h、このヘルプメッセージを表示して終了--help -i INVENTORY、--inventory = INVENTORY、--inventoryファイル= INVENTORY 在庫ホストパスまたはコンマ区切られたホストを指定します リスト。--inventory-ファイルは廃止されました -l SUBSET、--limit = SUBSET さらなる制限は、追加のパターンにホストを選択しました --list-ホストが一致するホストのリストを出力します。実行していません 他に何か -m MODULE_NAME、--module名= MODULE_NAME 実行するモジュール名(デフォルト=コマンド) -M MODULE_PATH、--moduleパス= MODULE_PATH モジュールライブラリにプリペンドコロンで区切られたパス(複数可) (デフォルト= [U '/ルート/ .ansible /プラグイン/モジュール'、 U 'は、/ usr / share / ansible /プラグイン/モジュール']) --new-ボールト-ID = NEW_VAULT_ID 鍵再生成に使用する新しいボルトアイデンティティ --new-ボールト・パスワード・ファイル= NEW_VAULT_PASSWORD_FILES 鍵更新のための新しいボールトパスワードファイル -o、--oneラインコンデンス出力 -P POLL_INTERVAL、--poll = POLL_INTERVAL -Bを使用した場合はポーリング間隔を設定します(デフォルト= 15) --syntaxチェックは脚本上の構文チェックを実行しますが、しないでください それを実行 このディレクトリに-t TREE、--tree = TREEログ出力 使用に--vault-ID = VAULT_IDSボールトアイデンティティ --vaultパスワードファイル= VAULT_PASSWORD_FILES ボールトパスワードファイル -v、--verbose冗長モード(より多くのために、-vvvvを有効にする-vvv 接続のデバッグ) --versionショープログラムのバージョン番号を表示して終了 接続オプション: コントロールとして、どのようにホストに接続 -k、--ask・パスの接続パスワードの入力を求めます --privateキー= PRIVATE_KEY_FILE、--key-ファイル= PRIVATE_KEY_FILE 接続を認証するために、このファイルを使用します -u REMOTE_USER、--user = REMOTE_USER このユーザとして接続(デフォルト=なし) -c CONNECTION、--connection = CONNECTION 使用する接続タイプ(デフォルト=スマート) -T TIMEOUT、--timeout = TIMEOUT 秒単位で接続タイムアウトを上書き (デフォルト= 10) --ssh-共通引数= SSH_COMMON_ARGS 例えば(SFTP / SCP / SSHに渡す共通の引数を指定します ProxyCommand) --sftp補足引数= SFTP_EXTRA_ARGS 例えば-f(のみSFTPに渡す追加の引数を指定して、 -l) --scp補足引数= SCP_EXTRA_ARGS SCPに渡す追加の引数を指定するだけで(例えば-l) --ssh補足引数= SSH_EXTRA_ARGS (例えば-R)のみのsshに渡す追加の引数を指定します 権限昇格のオプション: あなたは、ターゲットホスト上のようになってどのようにしているユーザーコントロール -s、須藤との操作を実行し--sudo(NOPASSWD)(非推奨、使用 )になります -U SUDO_USER、--sudoユーザー= SUDO_USER 所望須藤ユーザ(デフォルト=ルート)(非推奨、使用 )になります -S、--suは、suコマンドを使用して操作を実行します(非推奨、使用になります) -R SU_USER、--suユーザー= SU_USER このユーザーとしてsuコマンドで操作を実行します(デフォルト=なし) (非推奨、使用になります) -b、なると--become実行操作(パスワードを意味するものではありません。 )プロンプト --become法= BECOME_METHOD (デフォルト=須藤)を使用するには、特権の昇格の方法、 有効な選択肢:[須藤| SU | pbrunです| pfexec | DOAS | dzdo | KSU | スピーチ| pmrun] --becomeユーザー= BECOME_USER このユーザーなどの操作を実行します(デフォルト=ルート) sudoのパスワードを尋ねる--ask-sudoは、合格(非推奨、使用になります) suコマンドのパスワードの入力を求める--ask-SU-渡す(非推奨、使用になります) -K、--ask-なるパス 権限昇格のパスワードの入力を求めます 一部のモジュールは、アドホック(含まれ、メタなど)に意味がありません。
説明:ヘルプ以上、私たちは基本フォーマットansibleコマンドがansibleであることを理解<ホストパターン> [オプション]、ホスト・パターンは、我々は最初に、おそらくそれは指定されたホスト、それだと思うホストを、パターンマッチングを表している、私たちが言うに従います彼は何を一致させるパターンを述べました。ここでは、コマンドの基本フォーマットはansible + ansible指定されたホストであるモジュールを表す-aパラメータは、-mは、特定のモジュールの名前を表す一般的なオプションについて何かを言うために(もちろん、これはまた、我々は定義されていること、グループ名を指定して、ホストのグループ名リストすることができ、試合は、そのグループ名)+パラメータモジュール+モジュールの名前すべてのホスト、操作を行うために何かを(行うために、どのようなモジュールにansible動作し、ホストがモジュールにパラメータを渡すことであると多分手段)でした
ビューピングモジュール方式
ルート@ドッカ〜]#ansible-docのピング > PING(/usr/lib/python2.7/site-packages/ansible/modules/system/ping.py) 些細なテストモジュールは、このモジュールは常に成功接触に `ピンポン」を返します。します プレイブックに意味をなさないが、それは確認する「`は/ usr / binに/ ansibleから便利ではありません 使用可能なのpythonログインするとその能力が設定されています。これは、ICMPピング、これはされないが、 ただ些細なテストモジュール。Windowsターゲットの場合は、代わりにモジュール[win_ping]を使用します。 OPTIONS(=必須です): - データ データは `pingの」戻り値を戻します。 このパラメータが `クラッシュ」に設定されている場合は、モジュールは、例外が発生します。 [デフォルト:ピンポン] ノート: * Windowsターゲットの場合は、代わりに[win_ping]モジュールを使用しています。 AUTHOR:Ansibleコアチーム、マイケルDeHaan メタデータ: 状態: - stableinterface supported_by:コア :
注:説明上記参照は、Linuxの男のヘルプインターフェースのようなビットは、ええ、私たちが助けにansibleモジュール男ansible-docの同等のビューを理解することができるで、この文書をより詳細に表示されますが、通常我々が見るその基本的な使い方がありますされます説明モジュールの主なパラメータの簡単な説明を表示するには、-sオプションは、このオプションでは、以下に示すように、我々は、コマンドオプションまたは-h --helpオプションを使用し、ビットLinuxのようなものです
[ルート@ドッカ〜]#ansible-docの-sピング - 名前は:使用可能なのpythonを確認し、ホストへの接続を試み、成功時に `ピンポン」を返します pingを実行: データ:#データは `pingの」戻り値を戻します。このパラメータは、 `クラッシュ」に設定されている場合は、 モジュールは、例外が発生します。 [ルート@ドッカ〜]#
使用方法:速くピングモジュールを使用しての基本を理解していない-sオプション、ヘルプに上記の情報は、私たちは、ピングからモジュールの主な機能は、ホストに接続しようとすることであることを理解していれば、オンラインでホスト「ピンポン」復帰
リモートホストとのPingテストモジュールはオンラインです
[ルート@ドッカ〜] #ansible websers -mピング 192.168.0.128 | SUCCESS => { 「変更」:偽、 "卓球" } 192.168.0.218 | SUCCESS => { 「変更」:偽、 "卓球" } [ルートドッキングウィンドウ@〜] #ansible appsers -mピング 192.168.0.217 | SUCCESS => { 「変更」:偽、 "卓球" } [ドッキングウィンドウ@ルート〜] #ansibleすべての-mのping 192.168.0.128 | SUCCESS => { 「変更」:偽、 "卓球" } 192.168.0.218 | SUCCESS => { 「変更」:偽、 "卓球" } 192.168.0.217 | SUCCESS => { 「変更」:偽、 "卓球" } [ルート@ドッカ〜]#
注:原因3つのホストへの私のテスト環境、すでに情報が失敗した場合に返されるので、パスワードのためのプロンプト、ansibleデフォルトについて言うべき価値が認定への道に基づいてSSH鍵認証を使用することはありませんされ、SSHキーベースの認証を行っています(構成に基づいて、SSH鍵認証については、私のブログを参照https://www.cnblogs.com/qiuhom-1874/p/11783371.htmlを)、SSHキーベースの認証を行うことなく、リモートホストならば、我々はオプションを追加する必要があります-以下に示すようにkは、パスワード認証モードを指定したユーザ名です
[ルート@ドッカ〜] #ansibleすべての-m -kのping SSHパスワード: 192.168.0.128 | SUCCESS => { 「変更」:偽、 "卓球" } 192.168.0.218 | SUCCESS => { 「変更」:偽、 "卓球" } 192.168.0.217 | SUCCESS => { 「変更」:偽、 "卓球" } [ルート@ドッカ〜]#
注:私たちは、パスワードが入力されていることを見ることができ、3つのホストが結果を返されたが、これはなぜですか?私たちはホスト3場合ansible、認証が成功した場合には、ホスト上で当社指定の認証にパスワードを入力するように成功したリターンを私たちがかかりますので、障害が返すことができなかった、私たちのホストが同じパスワードだと思うので、その不適切なタイトパスワードは同じではありませんか?これは私たちにリモートホストを制御するために、不便の多くを与えるだろう、あなたがansible使用する前に、SSH鍵認証に基づいて良い仕事をすることをお勧めします。
これらは私が友人のガガの注目のようなansible他の用途を、更新していきます、次の基本的な使用ansibleソフトウェアやプレゼンテーションです。ひどく書かれた、私を修正してください、ありがとうございました!!!