二是不須要代理配置工具的,能夠直接基於SSH服務來完成管理功能,如ansible,fabric等。mysql
工具 | 開發語言 | 結構 | 配置文件格式 | 運行任務 |
---|---|---|---|---|
Ansible | Python | 無 | YAML | 支持命令行 |
SaltStack | Python | C/S | YAML | 支持命令行 |
Puppet | Ruby | C/S | Ruby語法格式 | 經過模塊實現 |
服務器 | IP地址 | 操做系統 | 組名 |
---|---|---|---|
控制主機 | 192.168.144.112 | centos7.3 x86_64 | 無 |
被控制主機1 | 192.168.144.111 | centos7.3 x86_64 | webserver |
被控制主機2 | 192.168.144.114 | centos7.3 x86_64 | mysql |
yum install epel-releaseweb
yum install ansible -y
yum install tree -ysql
tree /etc/ansibleshell
/etc/ansible/ ├── ansible.cfg //主配置文件 ├── hosts //管控主機文件 └── roles //角色目錄
vim /etc/ansible/hostsvim
[webserver] //主機分類組名 192.168.144.111 //主機IP地址或者是域名 [mysql] 192.168.144.114
ssh-keygen -t rsa
ssh-copy-id root@192.168.144.111 //發送公匙給被控服務器
ssh-copy-id root@192.168.144.114centos
ssh-agent bash
ssh-add //輸入私鑰密碼便可安全
ansible 192.168.144.111 -m command -a 'date' //指定ip執行date
ansible webserver -m command -a 'date' //指定分類執行date
ansible mysql -m command -a 'date'
ansible all -m command -a 'date' //全部hosts主機執行date命令
ansible all -a 'ls -l /' 若是不加-m模塊,則默認運行command模塊bash
ansible-doc -s cron //查看cron模塊信息
ansible webserver -m cron -a 'minute="*/1" job="/bin/echo heihei" name="test cron job"'服務器
ansible webserver -m cron -a 'hour="23" job="/bin/echo heihei" name="test cron job"' //天天23點執行,若想每隔23個小時執行須要改爲hour="*/23" ansible webserver -m cron -a 'weekday="6" job="/bin/echo heihei" name="test cron job"' ansible-doc -s cron //結合查看詳細用法
ansible webserver -a 'crontab -l'
ansible webserver -m cron -a 'name="test cron job" state=absent' //移除計劃任務,假如該計劃任務沒有取名字,name=None便可運維
ansible webserver -m user -a 'name="test1"'
ansible webserver -m user -a 'name="test2" shell=/sbin/nologin' //添加用戶指定shell登陸方式
ansible webserver -m command -a 'tail /etc/passwd' //查看用戶
ansible webserver -m user -a 'name="test1" state=absent' //刪除用戶test01
ansible-doc -s group //查看group模塊幫助文檔
ansible mysql -m group -a 'name=mysql gid=306 system=yes' //建立mysql組,指定gid,設置爲系統組
ansible mysql -a 'tail /etc/group'
ansible mysql -m user -a 'name=test01 uid=306 system=yes group=mysql' //使用user模塊添加用戶,並添加到mysql組
ansible mysql -a 'tail /etc/passwd'
ansible mysql -a 'id test01'
ansible-doc -s copy
ansible mysql -m copy -a 'dest=/opt/123.txt content="heihei" owner=test01 group=test01 mode=600' //新建文件且指定內容
ansible mysql -a 'ls -l /opt'
ansible mysql -m copy -a 'src=/etc/fstab dest=/opt/fstab.back owner=root mode=640' //複製文件
ansible-doc -s file
ansible mysql -m file -a 'owner=root group=root mode=755 path=/opt/123.txt' //更改文件的屬主屬組
ansible mysql -m file -a 'src=/opt/123.txt dest=/opt/123.txt.bk state=link' //建立軟鏈接
ansible mysql -m file -a 'path=/opt/test.txt state=touch' //新建一個空文件,若須要指定內容須要copy模塊,content指定內容
ansible all -m ping
ansible-doc -s yum
ansible mysql -m yum -a 'name=httpd'
ansible mysql -m yum -a 'name=httpd state=absent'
ansible mysql -m command -a 'rpm -q httpd'
ansible-doc -s service
ansible mysql -m service -a 'name=httpd enabled=true state=started' //設置httpd開啓自啓動,且狀態爲開啓
ansible mysql -m command -a 'systemctl status httpd'
ansible-doc -s shell
ansible mysql -m shell -a 'echo abc123 | passwd --stdin test' //爲test用戶建立面交互式密碼
ansible-doc -s script
vi test.sh
#!/bin/bash echo "hello ansible from script"> /opt/script.txt
chmod +x test.sh
ansible mysql -m script -a 'test.sh'
ansible-doc -s setup
ansible mysql -m setup