1. 程式人生 > >ansible自動化運維

ansible自動化運維

pssh ansible

PSSH

相對於ssh來說是多線程的,可以並行在多個客戶端執行,效率更高,適合100-300臺

安裝部署

cd /usr/src/;

wget -c http://www.theether.org/pssh/pssh-1.4.3.tar.gz;

cd pssh-1.4.3;

python setup.py install

報錯可能需要源碼安裝setuptools

管理多個遠程主機,要創建一個list文件list.txt

把要管理的IP寫進去


需要做免密鑰

#ssh-keygen

#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.102

第一次要輸密碼,以後就不需要了

pssh -i -h list.txt -l root "任何遠程執行的命令;echo "/n""

-p 20 指定最大20個線程來運行pssh

-t -1 永不超時


pscp

pscp -h list.txt auto_install_zabbix.sh /tmp/

pssh -i -h list.txt ‘cd /tmp/;yes/sh auto_install_zabbix.sh‘


pslurp -h list.txt -L /daa/20170519(本地目錄) /tmp/zabbix.sh(客戶端文件)

pnuke -h list.txt 進程 殺死遠程進程

Ansible

維護幾千上萬臺,基於ssh通信,不需要安裝agent。

saltstack基於agent通信,還有puppet

基於python開發,維護更簡單。

支持免密鑰或者密碼。

支持sudo普通用戶命令

安裝

rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm;

yum install ansible -y;

cd /etc/ansible/;

這下面有兩個文件,hosts和ansible.cfg

hosts是寫IP的,可以分組管理

[web]

192.168.1.101

192.168.1.102

,cfg文件就改端口,最大連接數


ansible

-i 指定使用的inventory文件all或者寫哪個組web或者直接指定主機IP

-m指定使用的模塊,默認為command,還有 -m shell可以代替大部分模塊,ansible-doc -l是看有哪些模塊

-a 指定模塊的參數,可以是命令等等。

-k 可以輸密碼,沒有做免密鑰方便

ansible all -m copy -a ‘src=/etc/passwd dest=/tmp/ mode=755 owner=root‘

ansible 192.168.1.12* -m yum -a "name=sysstat,screen state=installed"


創建Ansible Playbook

在/etc/ansible/目錄下,新建screen.yaml文件,內容如下:

- hosts: all

remote_user: root

tasks:

- name: yum install screen

shell: yum install screen –y

文件解析:-hosts:all指定對所有hosts生效,remote_user表示遠程root,tasks表示需要執行的任務;name顯示的名稱,shell後面接:需要在遠程客戶端執行的命令。可以寫多個命令,以;分號隔開即可,例如 shell: yum install screen -y ;mkdir /tmp/`date +%Y%m%d`

使用方法:ansible-playbook scree.yaml

ansible自動化運維