平臺Centos 6.5 x86_64html
ansible是一款用Python開發的自動化運維部署工具,ansible沒有采用C/S的架構,而是基於ssh協議、去中心化的管理方式,非常不錯。^_^
1,安裝
yum install -y epel-releasemysql
yum update -ylinux
yum install -y ansiblesql
2,設置管理機ssh免密碼登陸節點機
管理機上執行以下命令,隨後連敲兩次空格鍵默認在/root/.ssh目錄下生成密鑰文件id_rsa和公鑰文件id_rsa.pub,確保/root/.ssh/authorized_keys的權限爲600
ssh-keygen -t rsa shell
在管理機上將本身的公鑰拷貝到集羣節點機上
ssh-copy-id -i .ssh/id_rsa.pub root@10.11.2.7bash
3.ansible命令格式
ansible中的臨時命令的執行是經過Ad-Hoc來完成,可以快速執行,並且不須要保存執行的命令。
#命令格式:
ansible <pattern_goes_here> -m <module_name> -a <arguments>
#例如:
ansible all -m copy -a 'src=/etc/my.cnf dest=/etc/'
#幾個重要參數的含義:
-i #指定inventory文件(主機定義文件)
all #表示在host文件中定義的全部的主機,能夠替換成響應的組名或IP地址
#針對於主機可使用匹配規則(全部的匹配都基於配置文件中的主機)
IP地址: ansible 192.168.239.132
IP匹配: ansible 192.168.239.*
IP匹配: ansible *
組匹配: ansible 組名:&hostname <表示這個組跟其餘組的一個主機>
組匹配: ansible 組名:!hostname <表示這個組可是出除去這個組的這個主機>
#相似的匹配還不少,幾乎能想到的匹配都能支持,具體參照http://docs.ansible.com/intro_patterns.html
-m #指定使用哪一個模塊,默認採用command模塊
-a #指定模塊的參數,每一個模塊都有相應的模塊參數
-u #指定遠端機器的用戶架構
4.ansible模塊幫助運維
ansible-doc l #查看模塊列表
ansible-doc copy #查看copy模塊的詳細信息
ansible-doc script #查看script模塊的詳細信息ssh
經常使用的模塊有ping,copy,shell,command等等。工具
command <執行linux命令的>
ansible all -m command -a 'ifconfig'
copy <實現文件複製>
ansible all -m copy -a 'src=/etc/my.cnf dest=/etc/my.cnf owner=mysql group=mysql' owner group 能夠根據選擇自定義的決定要不要指定
file <實現目錄文件權限的修改/建立與刪除>
ansible all -m file -a 'dest=/etc/rsync.d/secrets mode=600 owner=root group=root'
ansible all -m file -a 'dest=/data/install mode=755 owner=root grou=root state=directory' #建立這個不存在的目錄
ansible all -m file -a 'dest=/data/tmp state=absent' #刪除這個目錄
yum <使用yum進行軟件包的管理>
ansible all -m yum -a 'name=httpd state=installed'
service <管理linux系統服務>
ansible all -m service -a 'name=httpd state=start'
state選項主要有:start,restart,stop
cront <管理linux計劃任務>
ansible all -m cron -a 'name="you autoupdate" weekday="2" minute=0 hour=12 user="root" job="/usr/sbin/yum-autoupdate" cron_file=ansible_yum-autoupdate
5,測試並開始管理節點機
ansible all -m ping
ansible all -m copy -a "src=/root/log.sh dest=/root owner=root group=root mode=755"
ansible all -m shell -a "/root/log.sh"
ansible all -m shell -a 'netstat -anl | grep 3306'
用ansible playbook簡單安裝zabbix客戶端
1,創建playbook用到的目錄
mkdir -p /etc/ansible/roles/zabbix-agent/{defaults,files,handlers,meta,tasks,templates,vars}
cd /etc/ansible
├── ansible.cfg
├── hosts
├── roles
│ └── zabbix-agent
│ ├── defaults
│ ├── files
│ │ └── install_zabcli.sh
│ ├── handlers
│ ├── meta
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ └── vars
└── zabbix-agent.yml
2,vi zabbix-agent.yml
- hosts: client
remote_user: root
roles:
- zabbix-agent
3,vi main.yml
- name: copy install_shell to client
copy: src=install_zabcli.sh dest=/root/install_zabcli.sh owner=root group=root
- name: install zabbix-agent
shell: /bin/bash /root/install_zabcli.sh
4,vi install_zabcli.sh
#!/bin/bash
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-agent-3.2.7-1.el7.x86_64.rpm
IP=`ip addr | grep "global eth0"| awk '{print $2}'| awk -F "/" '{print $1}'`
sed -i 's@Server=127.0.0.1@Server=10.46.209.103@' /etc/zabbix/zabbix_agentd.conf
sed -i "s@# ListenIP=0.0.0.0@ListenIP=$IP@" /etc/zabbix/zabbix_agentd.conf
sed -i 's@erverActive=127.0.0.1@ServerActive=10.46.209.103@' /etc/zabbix/zabbix_agentd.conf
sed -i 's@# UnsafeUserParameters=0@UnsafeUserParameters=1@' /etc/zabbix/zabbix_agentd.conf
echo "UserParameter=netstat[*], ss -nat | grep -c $1" >> /etc/zabbix/zabbix_agentd.conf
service zabbix-agent start
5,cd /etc/ansible
ansible-playbook zabbix-agent.yml 執行遠程安裝
PLAY [client] ****************************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************
ok: [10.25.101.187]
TASK [zabbix-agent : copy install_shell to client] ***************************************************************************************************
changed: [10.25.101.187]
TASK [zabbix-agent : install zabbix-agent] ***********************************************************************************************************
changed: [10.25.101.187]
PLAY RECAP *******************************************************************************************************************************************
10.25.111.187 : ok=3 changed=2 unreachable=0 failed=0
6,驗證客戶端安裝成功以下: [root@i ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=10.46.209.103 ListenIP=$IP SServerActive=10.46.209.103 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1 UserParameter=netstat[*], ss -nat | grep -c