[root@node1 ansible]# ansible nodes -m user -a "name=wadeson state=absent"
cron模塊:
ansible-doc -s cron
[root@node1 ansible]# ansible all -m cron -a 'name="sync time" minute=2 user=root state=present job="/usr/sbin/ntpdate time.nist.gov &> /dev/null"'
192.168.223.146 | FAILED! => {
"changed": false,
"failed": true,
"msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"
}
解決辦法:在節點主機上安裝libselinux-python
yum -y install libselinux-python
再次在ansible服務器上執行:
[root@node1 ansible]# ansible all -m cron -a 'name="sync time" minute=*/2 user=root state=present job="/usr/sbin/ntpdate time.nist.gov &> /dev/null"'
192.168.223.146 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"sync time"
]
}
在節點上查看:
[root@wadeson ~]# crontab -l
#Ansible: sync time
2 * * * * /usr/sbin/ntpdate time.nist.gov &> /dev/null
刪除cron任務:
ansible all -m cron -a 'name="sync time" state=absent‘
copy模塊:
ansible-doc -s copy
ansible all -m copy -a "src=/etc/fstab dest=/tmp/fatab.bak mode=600"
節點上查看:
[root@wadeson ~]# ll /tmp/
總用量 8
-rw-------. 1 root root 899 7月 30 21:55 fatab.bak
[root@node1 ansible]# cat test_var.yaml
- hosts: nodes
remote_user: root
tasks:
- name: create a new file
copy: content={{ node_var }} dest=/tmp/ansible_var.txtshell
file模塊:
ansible-doc -s file,建立文件,目錄,連接文件
ansible all -m file -a 'path=/tmp/testdir state=directory'
ansible all -m file -a 'src=/tmp/fstab.bak dest=/root/fstab.bak state=link'
[root@wadeson ~]# ll
總用量 16
-rw-------. 1 root root 1104 7月 30 19:54 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 14 7月 30 22:03 fstab.bak -> /tmp/fstab.bak
state:file|absent|directory|link|hard|touch
在遠程節點上建立一個新文件:
ansible nodes -m file -a 'path=/tmp/ansible_agent.txt
state=touch'
path這裏能夠爲dest或者name
yum模塊:
ansible-doc -s yum
ansible all -m yum -a 'name="vim,wget" state=latest'
state:present|latest|absent
ansible all -m yum -a 'name=ntpdate state=latest'
按照ntpdate包,而後定義cron任務
service模塊:
參數:
enabled:設置是否開機啓動
state:started|stopped|restarted
ansible all -m yum -a 'name=httpd state=latest'
ansible all -m service -a 'name=httpd state=started enabled=no'
節點查看:
[root@wadeson ~]# rpm -qa httpd
httpd-2.2.15-60.el6.centos.4.x86_64
[root@wadeson ~]# chkconfig --list|grep httpd
httpd 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
shell模塊:
-a 「command」,沒有額外的參數
命令中帶有管道,變量等等
[root@node1 ~]# ansible nodes -m shell -a 'echo "redhat"|passwd --stdin testuser1'
192.168.223.146 | SUCCESS | rc=0 >>
更改用戶 testuser1 的密碼 。
passwd: 全部的身份驗證令牌已經成功更新。
而command模塊:
[root@node1 ~]# ansible nodes -m command -a 'echo "redhat"|passwd --stdin testuser1'
192.168.223.146 | SUCCESS | rc=0 >>
redhat|passwd --stdin testuser1
能夠看出並無修改用戶的密碼,command模塊只能執行簡單的命令
script模塊:
一、將腳本傳到node上
二、並在node上執行該腳本
ansible服務器:
[root@node1 ~]# cat echo.sh
#!/bin/bash
echo "ansible is better" > /tmp/echo.text
ansible all -m script -a "/root/echo.sh"
節點查看:
[root@wadeson ~]# ll /tmp/
總用量 16
-rw-r--r--. 1 root root 18 7月 30 14:46 echo.text
setup模塊:查看facts
收集node上的系統信息,能夠看成變量進行調用
ansible all -m setup