安裝ansible
[root@ansible ~]# yum install -y ansibleweb
修改管理哪些主機的清單文件
[root@ansible ansible]# vi /etc/ansible/hosts
[webserver]
192.168.1.21
192.168.1.22
192.168.1.23shell
給ansible和被管理的主機之間作一個密鑰登陸
[root@ansible ansible]# ssh-keygen
[root@ansible ansible]# ssh-copy-id 192.168.1.21bash
管理主機分兩種方式(命令/劇本)
命令:
命令格式
ansible <hosts> [options]app
例子1: ping 測通是否通暢
[root@ansible ansible]# ansible webserver -m ping -u root
...省略ssh
例子2: 調用目錄下的echo命令
[root@ansible ansible]# ansible all -a "/bin/echo hello world"
...省略ide
例子3: copy文件到另外一個目錄
[root@ansible ansible]# ansible webserver -m copy -a "src=/etc/passwd dest=/opt/passwd"ui
...省略debug
例子4: 安裝軟件
[root@ansible ansible]# ansible webserver -m yum -a "name=lrzsz"
...省略rest
例子5: 添加用戶
[root@ansible ansible]# ansible webserver -m user -a "name=zhangsan password=123"code
例子6: 啓動系統的某個服務
[root@ansible ansible]# ansible webserver -m service -a "name=sshd state=started"
...省略
[root@ansible ansible]# ansible webserver -m service -a "name=httpd state=started"
...省略
[root@ansible ansible]# ansible webserver -m service -a 'name=httpd state=restarted'
...省略
例子7: 重啓某個服務
[root@ansible ansible]# ansible webserver -m service -a "name=httpd state=restarted"
...省略
例子8: 指定3臺機器執行同一個命令(屬於並行執行)
[root@ansible ansible]# ansible webserver -a "echo hello" -f 3
...省略
例子9: 獲取系統信息
[root@ansible ansible]# ansible webserver -m setup
...省略
劇本:
Playbook組成
hosts: 目標主機 remote_user: 執行操做的用戶身份 vars: 執行中的一些變量 tasks: 定義順序執行的action,每一個action調用一個模塊 handers: event處理操做,僅有在action觸發時纔會執行,屢次觸發只執行一次並按照聲明的順序執行。
例子10: 安裝httpd服務
[root@ansible /]# vi test.yml
hosts: webserver
remote_user: root
tasks:
例子11: 獲取debug信息
[root@ansible /]# vi debug.yml
例子12: shell模塊
[root@ansible /]# vi shell.yml
例子13: 拷貝模塊
[root@ansible /]# vi copy.yml
hosts: all
remote_user: root
tasks:
hosts: all
remote_user: root
tasks:
name: create user
user:
name: apeng
uid: 5000
group: ftp
shell: /bin/bash
groups: apeng
append: yes
例子15: 安裝httpd 而後再 卸載
[root@ansible /]# vi yum.yml
實例16: command模塊
[root@ansible /]# vi command.yml