zabbixシリーズのansibleを使用してzabbixクライアントを一括配置する(二)


ansible
ansibleは新しく登場した自動化メンテナンスツールであり、Pythonに基づいて開発され、多くのメンテナンスツール(puppet、cfengine、chef、func、fabric)の利点を集め、一括システム構成、一括プログラム配置、一括実行コマンドなどの機能を実現した.
ansibleはモジュールベースで動作し、それ自体は一括配置の能力がありません.本当に一括配置があるのはansibleが実行するモジュールで、ansibleはフレームワークを提供するだけです.主な内容は次のとおりです.
(1)、接続プラグインconnection plugins:監視された側と通信を実現する.
(2)、host inventory:操作するホストを指定し、プロファイルに監視を定義するホストである.
(3)、各種モジュールコアモジュール、commandモジュール、カスタムモジュール;
(4)、プラグインによってログメールを記録するなどの機能を完成する.
(5)、playbook:シナリオが複数のタスクを実行する場合、ノードに複数のタスクを一度に実行させる必要はありません.
ansibleの特性:
(1)、no agents:管理対象ホストにクライアントをインストールする必要はありません.
(2)、no server:サーバ側がなく、使用時に直接コマンドを実行すればよい.
(3)、modules in any languages:モジュール作業に基づいて、任意の言語でモジュールを開発することができる.
(4)、yaml、not code:yaml言語でシナリオプレイブックをカスタマイズする;
(5)、ssh by default:SSHベースで動作;
(6)、strong multi-tier solution:マルチレベル指揮を実現できる.
ansibleの利点
(1)、軽量級で、クライアントにagentをインストールする必要がなく、更新する時、操作機で一回の更新を行うだけでよい.
(2)、一括タスク実行はスクリプトとして書くことができ、リモートに配布することなく実行することができる.
(3)、pythonで書くと、メンテナンスが簡単で、ruby文法が複雑すぎる.
(4)、sudoをサポートする.
Ansibleエンタープライズアプリケーション:
主なアーキテクチャ機能:
   Ansible Core.//コア機能
   Modules:
Core Modules//コア機能
Customed Modules//カスタムモジュール
ホストInventory//ホストライブラリとホストリストで、管理するホストを定義
        File
CMDB(構成管理データ)
PlayBooks//シナリオ、ホストが演じていない役を定義します
        Hosts.//本体
        roles.//キャラクター
   Connection Plugins.//プラグインを接続し、管理対象ホストに接続し、同時接続を完了し、デフォルトでは一度に5台管理するが、修正できる.
構築環境(CentOS 7)
環境トポロジー図、図1に示すように
図1
ホスト
           ip
ロール#ロール#
   centos1
   192.168.15.11/24
zabbixサービス側+ansible
   centos2
   192.168.15.12/24
zabbixクライアント
   centos3
   192.168.15.13/24
zabbixクライアント
   centos4
   192.168.15.14/24
zabbixクライアント
環境の構築を開始
1、まず各ホストを配置して、ファイアウォールとselinuxをすべてオフにして、CentOS 7の最小化インストールなので、先にgccをインストールして、zabbixサービス端から各zabbixクライアントまでのssh免鍵通信を配置する必要がある.
##  gcc
yum install -y gcc*

##  ssh    
[root@centos1 ~]# ssh-keygen
[root@centos1 ~]# ssh-copy-id 192.168.15.12
[root@centos1 ~]# ssh-copy-id 192.168.15.13
[root@centos1 ~]# ssh-copy-id 192.168.15.14

2、配置ansible
先にzabbixサービスをインストールする方法を書いたので、ここではansibleの構成だけを書きます.
(1)、ansibleの取り付け
##    yum  
[root@centos1 ~]# yum install -y ansible

(2)、ホストグループの定義
[root@centos1 ~]# cd /etc/ansible/
[root@centos1 ansible]# ls
ansible.cfg  hosts  roles
[root@centos1 ansible]# vim hosts 
[zabbix_agent]
192.168.15.12
192.168.15.13
192.168.15.14
##         
[root@centos1 ansible]# ansible zabbix_agent --list-hosts 
  hosts (3):
    192.168.15.12
    192.168.15.13
    192.168.15.14

(3)、図2に示すように各zabbixクライアントにpingが通じるかどうかをテストする
図2
(4)、図3に示すように、修正したhostsファイルをすべてのホストにプッシュする
[root@centos1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.15.11 centos1
192.168.15.12 centos2
192.168.15.13 centos3
192.168.15.14 centos4

図3
3、ansibleプッシュでzabbixクライアントをインストールする
あるサービスにプロファイルを提供する場合、プロファイルは異なるホストに対して提供する構成も異なります.具体的には、このホストのプロパティに依存して生成されます.この場合、テンプレートを使用するのが最も効果的です.ここではansibleのjijiaテンプレートを使用してansibleクライアントを配置します.
プロファイルの表示
[root@centos1 ~]# cd /etc/ansible/
[root@centos1 ansible]# cat zabbix_agent.yaml 
- hosts: zabbix_agent
  remote_user: root
  tasks:
  - name: install zabbix_agent packages
    yum: name={
     { item }} state=latest
    with_items:
    - curl-devel
  - name: copy install_shell to clien
    copy: src=/etc/ansible/zabbix_agent.sh dest=/usr/local/src/zabbix_agent.sh
  - name: sent tar
    copy: src=/usr/local/src/zabbix-3.2.7.tar.gz dest=/usr/local/src/zabbix-3.2.7.tar.gz
    notify: install shell
  handlers: 
  - name: install shell
    shell: /bin/bash /usr/local/src/zabbix_agent.sh

リモート実行スクリプトの表示
[root@centos1 ansible]# cat zabbix_agent.sh 
#!/bin/bash
useradd zabbix -s /sbin/nologin
cd /usr/local/src
tar -xf zabbix-3.2.7.tar.gz
cd zabbix-3.2.7
./configure --with-net-snmp --with-libcurl --enable-agent --prefix=/usr/local/zabbix
make && make install
cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
chmod 700 /etc/init.d/zabbix_agentd
sed -i  's\ZABBIX_BIN="/usr/local/sbin/zabbix_agentd\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd\g' /etc/init.d/zabbix_agentd
sed -i  's\Server=127.0.0.1\Server=192.168.15.11\g' /usr/local/zabbix/etc/zabbix_agentd.conf
/etc/init.d/zabbix_agentd start
chkconfig zabbix_agentd on

プッシュプロセスを図4に示す
図4
図5に示すようにzabbixクライアントが実行されているかどうかを確認します.
図5
これでansibleを使用してzabbixクライアントを一括インストールすることができます.
注意:
単一zabbixクライアントを導入するスクリプトをインストールするには、次のようにします.
[root@centos1 ~]# cat zabbix_agent.sh
#!/bin/bash
yum install -y gcc* ##  gcc
yum install -y curl-devel   ##     

useradd zabbix -s /sbin/nologin   ##    

##     
cd /usr/local/src/
wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.7/zabbix-3.2.7.tar.gz
tar -xf zabbix-3.2.7.tar.gz 

##    
cd zabbix-3.2.7
./configure --with-net-snmp --with-libcurl --enable-agent --prefix=/usr/local/zabbix
make && make install

##      
cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
chmod 700 /etc/init.d/zabbix_agentd
sed -i  's\ZABBIX_BIN="/usr/local/sbin/zabbix_agentd\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd\g' /etc/init.d/zabbix_agentd
sed -i  's\Server=127.0.0.1\Server=192.168.15.11\g' /usr/local/zabbix/etc/zabbix_agentd.conf

/etc/init.d/zabbix_agentd start    ##  
chkconfig zabbix_agentd on         ##      

転載先:https://blog.51cto.com/3381847248/2053858