1. ansibleとは
ansibleは、オープンソースの自動化プラットフォーム、構成管理ツール、および自動化された操作と保守ツールです。
2. ansibleの利点
** 1)クロスプラットフォームサポート
2)人間が読み取り可能な自動化:ansibleは、物理、仮想、クラウド、およびコンテナー環境に適した、Linux、Windows、UNIX、およびネットワークデバイスのエージェントレスサポートを提供します。
3)アプリケーションを完全に説明:プレイブック
4)バージョン管理を簡単に管理:プレイブックはプレーンテキストであり、ソースコードと見なすことができます。
5)動的リストをサポートします。
6)オーケストレーションは、他のシステム(人形、ジェンキンス)と簡単に統合できます。
7)インフラストラクチャはコードです。
8)人的ミスを減らす。
タスク、プレイ、およびプレイブックはべき等になるように設計されているため、プレイブックを実行しても、ターゲットホストが正しい状態であれば、変更は行われません。
3. ansibleをインストールする
1)rhel7にansibleをインストールし、コントロールノードとして機能します。
ソフトウェアインストールパッケージを見つけるには、pkgsとrpmを使用することをお勧めします。
まずBaiduでpkgsを検索します。
上記のリンクを入力した後、確認コードをもう一度入力し、インストールパッケージのダウンロードURLを見つけて、URLをコピーし、ブラウザーでダウンロードを検索します。
sshpassインストールパッケージを適切にダウンロードします。
anmibleインストールの依存関係の問題を解決するために、yumソースをビルドします。次にインストールします。
yum install *.rpm -y ##安装刚下载的安装包
2)ansibleバージョン情報を表示する
3)セットアップモジュールを使用してPythonを確認する
4. ansibleをデプロイする
1)Ansibleデフォルト設定ディレクトリ:/ etc / ansible
デフォルト設定ファイル:/etc/ansible/ansible.cfg
デフォルトマニフェストファイル:/ etc / ansible / hosts
一般に、企業でのデータの混乱を防ぐために、新しい構成ファイルとリストファイルが作成され、あるタイプのデータを保存します
2)ansibleリストの作成リスト
とは:ansibleが管理するホストのバッチを定義します。
<1>静的リスト
各行に1つずつ、ホスト名またはIPを入力します。例:
ホストグループを定義することもできます:
[webservers]
rhel7_node2.westos.com
rhel8_node1.westos.com
192.168.43.30
[dbservers]
server1.westos.com
server2.westos.com
192.168.43.30
注:ホストは複数のホストグループに存在できます
上記のリストを確認します。
ansible all --list-hosts ##查看清单中管理的所有主机
ansible webservers --list-hosts ##查看webservers组中所有的主机
ansible dbservers --list-hosts ##查看dbservers组中所有的主机
ansible ungrouped --list-hosts ##查看清单中不在组里面的主机
<2>ネストされたグループの定義
ansibleホストリストには、次のような複数のホストグループを含めることができます。
[webservers]
rhel7_node2.westos.com
rhel8_node1.westos.com
192.168.43.30
[dbservers]
server1.westos.com
server2.westos.com
192.168.43.30
[サーバー:子]
webservers
dbservers
<3>範囲によるホスト指定の簡略化
ホスト名、IP範囲、または数字と文字の範囲を指定できます。
構文:[START:END]の
ような(1):192.168.43。[0:254] ##は、192.168.43.0 /
24のホストと一致します。例:(2):server [01:10] .westos.com ##と一致します。 server01.westos.comからserver10.westos.comまでのすべてのホスト。このメソッドはserver1.westos.comとは一致せず、server01.westos.comとのみ一致します。
(3)など:[a:c] .westos.com ## a.westos.comのホストをc.westos.comに一致させます。
3)検証リスト
ansible all --list-hosts ##すべての管理対象ホストを表示する
ansible webservers --list-hosts ## webserversグループ内の管理対象ホストを表示する
ansible ungrouped --list-hosts ##内部でグループ化されていないビュー管理対象ホスト
4)デフォルトのリストの場所:/ etc / ansible / hosts ##通常は使用されませんが、自分で作成します
5)動的リスト:オープンソースコミュニティのスクリプトから取得できます
演習(1):
上記のリストのすべての管理対象ホストを
リストします。グループに属していないホストを
リストします。webserversグループに属しているホストをリストします。
練習(2)
カスタムリスト
mkdir deploy-inventory ##建立清单目录
vim inventory ##建立清单文件
ホストのリスト:
5. ansible構成ファイルを管理する
1)ansible
構成ファイルを構成します:
<1> /etc/ansible/ansible.cfg ##基本構成ファイル。他の構成ファイルが見つからない場合は、これを使用してください
<2>〜/ .ansible.cfg ##この構成が存在し、現在の作業ディレクトリにはansible.cfgがありません。このファイルは/etc/ansible/ansible.cfg
<3>を置き換えます。./ansible.cfg ## ansibleコマンドが実行されるディレクトリにansible.cfgがある場合は、上記ではなく、それを使用します2つ(推奨、上記の2つは一般的に使用されません)
<4>使用される構成ファイルを表示します:
2)構成ファイルの設定を管理します:
[デフォルト] ## ansible操作のデフォルト値を部分的に設定します
[privilege_escalation] ##構成ansible管理対象ホストでの権限昇格の実行
例:
sudoを使用して分散化:
スーパーユーザーを使用してファイルを編集:
vim /etc/sudoers.d/westos
westos ALL =(ALL)NOPASSWD:ALL
6.一時的なコマンドを実行する
一時的なコマンドを使用して、プレイブックを作成せずにすばやくテストおよび変更し
ます1.形式:ansible host -pattern -m module [-a 'module arguments'] [-i inventory]
2.管理対象ホストでPythonモジュールを実行できるかどうかを確認します
3.一時的なコマンドを使用して、モジュールを通じてタスクを実行します
ansible-doc -l ##列出所有模块
ansible-doc ping ##查看ping模块的帮助文档
ansibleモジュール
ファイルモジュール:
-コピー | ローカルファイルを他の管理対象ホストにコピーする |
---|---|
-ファイル | ファイルのアクセス許可とその他の属性を設定する |
-lineinfile | 特定の行がファイルにあることを確認してください |
-同期 | コンテンツをrsyncと同期する |
システムモジュール:
-ファイアウォール | firewalldを使用してタスクポートとサービスを管理する |
---|---|
-リブート | 再起動 |
-サービス | 管理サービス |
-ユーザー | ユーザーアカウントの追加、削除、管理 |
ネットツールモジュール:
-get_url | http、https、またはftp経由でファイルをダウンロードする |
---|---|
-nmcli | 管理ネットワーク |
URLを | Webサービスと対話する |
4.例:
ユーザーモジュールを使用して、westosユーザーがrhel7_node2.westos.comに存在し、uidが1000で
あることを確認します。パスワードを入力すると問題が発生するため、2つのホストがシークレットログインを実行できます。
ssh-keygen ##生成密钥
ssh-copy-id rhel7_node2.westos.com ##将密钥传到rhel7主机中
2つのホストがパスワードなしでログインできるようになったので、今すぐコマンドを実行すると、直接正常に実行できます。
管理対象ホストでコマンドを実行します。-
o ##単一行表示
注:コマンドモジュールではリモートコマンドを実行できますが、これらのコマンドはシェルによって処理されないため、シェル環境変数にアクセスできないため、リダイレクト、転送、およびその他の操作を実行できません。
シェルとコマンドの使用の違い:
コマンドモジュールを使用して一時的なコマンドを実行します。
mkdir deploy-adhoc ##建立deploy-adhoc目录
cd deploy-adhoc ##进入目录
vim ansible.cfg ##建立配置文件
vim inventory ##建立清单文件
-uオプションを使用して生徒と接続し、idコマンドを実行します
注(1):上記の2つのコマンドを実行する場合は、新しく作成したディレクトリで実行する必要があります。そうしないと、結果は変わりません。つまり、IDを実行した後の-u studentの結果は、ルートIDと同じです。
注(2):コマンドモジュールを使用してansibleを介して一時コマンドを実行する場合、localhostとStudentは最初にパスワードなしのログインを行う必要があります。
パスワードなしのログイン操作は次のとおりです。
ssh-keygen ##先生成密钥
ssh-copy-id 主机名/ip ##复制密钥
コピーモジュールの使用
1.最初に学生ユーザーを使用します。学生ユーザーには書き込み権限がない
ため、/ etc / motdはスーパーユーザーのみが書き込むことができ、他のユーザーは書き込みできないため、権限がアップグレードされる必要があるため失敗します。
2.権限昇格を使用する
注:ここで特権エスカレーションを使用するには、最初に/etc/sudoers.d/studentファイルを編集する必要があります
vim /etc/sudoers.d/student
rootとしてコマンドを実行します。
ansible localhost -m copy -a 'content="hello westos\n" dest=/etc/motd' -u student --become ##become指以root的身份来执行,content指编写的文件,dest指将文件放置的位置
実行結果が黄色の場合はエラーが報告されておらずファイルが変更されていることを示し、緑色の場合は実行結果に問題はないがファイルに変更が加えられていないことを示します。
結果を表示する:
allパラメータを使用して、localhostとrhel7_node2.westos.comを一度に変更し
ます。/etc/sudoers.d/studentファイル
localhostの編集は以前に編集されているので、ここでrhel7_node2のファイルを編集するだけです。
次に、allパラメーターを使用して、実行を一度に変更します。
ansible all -m copy -a 'content="hello westos\n" dest=/etc/motd' -u student --become
localhostはすでに
正しい状態にあるため、localhostはSUCCESSを示し、rhel7_node2.westos.comはCHANGEDを示しています。
最後に、/ etc / motdにhello westosファイルが追加されているかどうかを確認します。