天天看點

ansible自動化運維

SSH

報nasty錯誤,要把/root/.ssh/known_hosts清空

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

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e

解壓,進入目錄,python setup.py install

管理多個遠端主機,要建立一個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 ansible_ssh_user=root ansible_ssh_pass=123456

,cfg檔案就改端口,最大連接配接數

cfg中加上host_key_checking_=False第一次連接配接就不用yes确認了

ansible免密碼連接配接 http://www.linuxe.cn/post-282.html

安裝完成後連接配接用戶端伺服器報錯:

FAILED => Using a SSH password insteadof a key is not possible because Host Key checking is enabled and sshpass doesnot support this.  Please add this host'sfingerprint to your known_hosts file to manage this host.

解決:在ansible 伺服器上使用ssh 登陸下/etc/ansible/hosts 裡面配置的伺服器。然後再次使用ansible 去管理就不會報上面的錯誤了!但這樣大批量登陸就麻煩來。因為預設ansible是使用key驗證的,如果使用密碼登陸的伺服器,使用ansible的話,要不修改ansible.cfg配置檔案的ask_pass = True給取消注釋,要不就在運作指令時候加上-k,這個意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False即可

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 192.168.1.12* -m shell -a ""/bin/bash" < test.sh"

建立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

saltstack

基于CS模式,服務端用戶端都要裝,ansible是基于ssh,隻需要控制端裝

繼續閱讀