自動化メンテナンスのansible-インストール導入と基礎コマンド編

8589 ワード

一、Ansible概要
AnsibleはPython言語に基づいて開発され、多くの優れたメンテナンスツールの利点を集め、一括実行コマンド、デプロイメントプログラム、構成システムなどの機能を実現した.
二、設置配置Ansibleサービス
Ansible自動化運行メンテナンス環境は制御ホストと被管理ホストから構成され、AnsibleはSSHプロトコルに基づいて通信するので、制御ホストはAnsibleソフトウェアをインストールした後、プログラムを再起動したり許可したりする必要はなく、被管理ホストもアプリケーションシーケンスをインストールしたり実行したりする必要はありません.
Ansibleケース環境
ロール#ロール#
ipアドレス
グループ名
ホストの制御
192.168.174.209
管理対象ホスト1
192.168.174.208
webservers
管理対象ホスト2
192.168.174.142
dbservers
1.制御ホストにepelソースをインストールする
yum install -y epel-release

2.yumコマンドでAnsibleをインストールする
yum install -y ansible

3.treeを取り付け、ansibleツリー構造を示す
yum install tree -y

4.ツリー構造の表示
tree /etc/ansible/
/etc/ansible/
├── ansible.cfg    #ansible     
├── hosts         #ansible    ,                  
└── roles     #  

5.ホスト構成表
vim /etc/ansible/hosts
          , ip  

[webservers]
192.168.174.208

[dbservers]
192.168.174.142

6.SSH無パスワード登録の設定
ssh-keygen -t rsa      #  ssh     

ssh-keygenを使用して一対の鍵を生成すると、ホームディレクトリに隠しフォルダが生成される.ssh、入ります.sshディレクトリの下で、ssh-copy-idを使用して生成された鍵を発行します.
ssh-copy-id [email protected]   #       
ssh-copy-id [email protected] 

7.インタラクティブフリーエージェントの使用
ssh-agent bash
ssh-add

8.ansibleコマンドを使用してインストールに成功したかどうかをテスト
[root@promote .ssh]# ansible all -a 'date'  //            
192.168.174.142 | SUCCESS | rc=0 >>
2018  08  01      20:55:39 CST

192.168.174.208 | SUCCESS | rc=0 >>
2018  08  01      20:55:39 CST

以上のansibleの環境導入が完了しました.
三、Ansible基礎命令の応用
Ansibleは、ansible[-m module_name][-a args]の基本構文を持つコマンド方式で自動化管理を行うことができます.
管理されるホストのipまたはグループ番号
[-m module_name]使用するモジュール
[-a args]モジュール特有のパラメータ
Ansibleは、管理ホストに対する様々なタスク管理を行う多くのモジュールを備えています.まず、Ansibleでよく使われるモジュールについて説明します.
1.commandモジュール
Ansible管理ツールは-mオプションを使用して使用するモジュールを指定し、デフォルトではcommandモジュールを使用します.
(1)ipアドレスを用いて実行するホストを指定する
[root@promote .ssh]# ansible 192.168.174.208 -m command -a 'date'
192.168.174.208 | SUCCESS | rc=0 >>
2018  08  01      21:21:18 CST

(2)管理対象ホストでの分類運転
[root@promote .ssh]# ansible webservers -m command -a 'date'
192.168.174.208 | SUCCESS | rc=0 >>
2018  08  01      21:22:38 CST

(3)すべての管理対象ホストで実行
[root@promote .ssh]# ansible all -m command -a 'date'
192.168.174.142 | SUCCESS | rc=0 >>
2018  08  01      21:23:28 CST

192.168.174.208 | SUCCESS | rc=0 >>
2018  08  01      21:23:28 CST

2.cronモジュール
すなわち、管理対象ホストのタスク計画を管理するためのカスタムタスク計画モジュールである.cronには2つの状態(state):presentは追加(省略可能)を表し、absentは削除を表す.
(1)タスク計画の追加
ansible webservers -m cron -a 'minute="*/1" job="/bin/echo heihei name="test cron job"'

(2)タスク計画の削除
タスク計画の削除は、指定したタスク計画名に従って実行されるため、削除されたタスク計画の名前nameを指定する必要があります.計画タスクに名前が付いていない場合は、name=Noneでよい
ansible webservers -m cron -a 'name="test cron job" state=absent'

3.userモジュール
新しいユーザーの作成と既存のユーザーの変更、削除に使用します.作成したユーザーの名前をnameで指定します.
(1)ユーザの作成
[root@promote .ssh]# ansible webservers -m user -a 'name=zhangsan'
192.168.174.208 | SUCCESS => {
    "changed": true, 
    "comment": "", 
    "create_home": true, 
    "group": 1000, 
    "home": "/home/zhangsan", 
    "name": "zhangsan", 
    "shell": "/bin/bash", 
    "state": "present", 
    "system": false, 
    "uid": 1000
}

(2)ユーザが正常に作成されたかどうかを確認する
[root@promote .ssh]# ansible webservers -a 'tail -1 /etc/passwd'
192.168.174.208 | SUCCESS | rc=0 >>
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash

4.groupモジュール
ユーザー・グループの管理
#  mysql ,  zhangsan     mysql 
[root@promote .ssh]# ansible webservers -m group -a 'name=mysql gid=306 system=yes'
192.168.174.208 | SUCCESS => {
    "changed": true, 
    "gid": 306, 
    "name": "mysql", 
    "state": "present", 
    "system": true
}
[root@promote .ssh]# ansible webservers -m user -a 'name=zhangsan uid=307 system=yes group=mysql'
192.168.174.208 | SUCCESS => {
    "append": false, 
    "changed": true, 
    "comment": "", 
    "group": 306, 
    "home": "/home/zhangsan", 
    "move_home": false, 
    "name": "zhangsan", 
    "shell": "/bin/bash", 
    "state": "present", 
    "uid": 307
}

5.copyモジュール
ファイルのコピーと一括配布を実現
#     /etc/fstab         /opt ,  fstab.bk,        root,     666
[root@promote .ssh]# ansible webservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bk owner=root mode=666'
192.168.174.208 | SUCCESS => {
    "changed": true, 
    "checksum": "6fb776f669de8f65b92aa2d6975f29d14860e8a9", 
    "dest": "/opt/fstab.bk", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "7f37c08e599574ebb0f41f2f92a54f20", 
    "mode": "0666", 
    "owner": "root", 
    "secontext": "system_u:object_r:usr_t:s0", 
    "size": 465, 
    "src": "/root/.ansible/tmp/ansible-tmp-1533132004.58-223000841853605/source", 
    "state": "file", 
    "uid": 0
}
[root@promote .ssh]# ansible webservers -a 'ls -l /opt'
192.168.174.208 | SUCCESS | rc=0 >>
    4
-rw-rw-rw-. 1 root root 465 8    1 22:00 fstab.bk
drwxr-xr-x. 2 root root   6 3   26 2015 rh

6.fileモジュール
管理ホストのファイルプロパティの設定
#  /opt/fstab.bk     mysql,    mysql,   644
[root@promote .ssh]# ansible webservers -m file -a 'owner=mysql group=mysql mode=644 path=/opt/fstab.bk'
192.168.174.208 | SUCCESS => {
    "changed": true, 
    "gid": 306, 
    "group": "mysql", 
    "mode": "0644", 
    "owner": "mysql", 
    "path": "/opt/fstab.bk", 
    "secontext": "system_u:object_r:usr_t:s0", 
    "size": 465, 
    "state": "file", 
    "uid": 306
}
[root@promote .ssh]# ansible webservers -a 'ls -l /opt'
192.168.174.208 | SUCCESS | rc=0 >>
    4
-rw-r--r--. 1 mysql mysql 465 8    1 22:00 fstab.bk
drwxr-xr-x. 2 root  root    6 3   26 2015 rh

7.pingモジュール
指定された管理ホストの接続性の検出
[root@promote .ssh]# ansible webservers -m ping 
192.168.174.208 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

8.yumモジュール
管理対象ホストへのパッケージのインストールとアンインストールを担当
[root@promote .ssh]# ansible webservers -m yum -a 'name=httpd'

9.サービスモジュール
管理サービスの稼働状態の制御
#  http           
[root@promote .ssh]# ansible webservers -m service -a 'enabled=true name=httpd state=started'

10.shellモジュール
Ansibleのshellモジュールは管理ホスト上でコマンドを実行できます
        zhangsan      
[root@promote .ssh]# ansible webservers -m shell -a 'echo abc123 | passwd --stdin zhangsan'
192.168.174.208 | SUCCESS | rc=0 >>
     zhangsan     。
passwd:               。

11.scriptモジュール
ローカルスクリプトを管理ホストにコピーして実行
#      test.sh,             
[root@promote .ssh]# vim test.sh
#!/bin/bash
echo "this is test script" >/opt/fstab.bk
[root@promote .ssh]# chmod +x test.sh #          
[root@promote .ssh]# ansible webservers -m script -a 'test.sh'
192.168.174.208 | SUCCESS => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.174.208 closed.\r
", "stderr_lines": [ "Shared connection to 192.168.174.208 closed." ], "stdout": "", "stdout_lines": [] } [root@promote .ssh]# ansible webservers -a 'cat /opt/fstab.bk' 192.168.174.208 | SUCCESS | rc=0 >> this is test script

12.setupモジュール
モジュールが管理ホストを収集、表示するためのfacts.
[root@promote .ssh]# ansible webservers -m setup

転載先:https://blog.51cto.com/13620954/2153372