centos 6.5上ansible初探

平臺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 

相關文章
相關標籤/搜索