Ansible的group支持all、通配符(*)、IP地址

查看Ansible的版本

$ ansbile —version
[root@test ~]# ansible —version
ansible 1.7.2
[root@test ~]#

消除首次ssh登录时要求输入yes确认

在所有机器上修改/etc/ssh/ssh_config文件中设置StrictHostKeyChecking no即可(默认为 ask )
[root@master ~]# grep “StrictHostKeyChecking” /etc/ssh/ssh_config
StrictHostKeyChecking no

拷贝文件

ansible -m copy -a “src=/etc/ssh/ssh_config dest=/etc/ssh/ssh_config owner=root group=root mode=644 force=yes”

示例:

  1. [root@test ~]# ansible all -m copy -a "src=/etc/ssh/ssh_config dest=/etc/ssh/ssh_config owner=root group=root mode=644 force=yes"
  2. 192.168.91.135 | success >> {
  3. "changed": true,
  4. "dest": "/etc/ssh/ssh_config",
  5. "gid": 0,
  6. "group": "root",
  7. "md5sum": "d27d7cc9767512b64c84d06544e01546",
  8. "mode": "0644",
  9. "owner": "root",
  10. "size": 2072,
  11. "src": "/root/.ansible/tmp/ansible-tmp-1476168613.68-180284084445387/source",
  12. "state": "file",
  13. "uid": 0
  14. }
  15. [root@test ~]#

查看所有机器的磁盘情况

ansible -m shell -a “df -h” -k

测试机器的连通性

ansible -m ping

Ansible所有的模块

http://docs.ansible.com/ansible/list_of_all_modules.html

将本机上的配置文件组装发送到远程主机

ansible -m assemble -a “src=/root/configure dest=/root/test/a.conf remote_src=False”

将本机上的配置文件组装发送到远程主机,带分隔符

ansible -m assemble -a “src=/root/configure dest=/root/test/a.conf remote_src=False delimiter=’####’”

设定权限进行拷贝

ansible -m copy -a “src=/root/configure/a.conf dest=/root/test owner=root group=root mode=0777”

拷贝的时候备份

ansible -m copy -a “src=/root/kel/1 dest=/tmp/kel owner=root group=root backup=yes”

拷贝文件之后进行验证

ansible -m copy -a “src=/etc/sudoers dest=/tmp/2 validate=’visudo -cf %s’”

fetch一个文件进行保存

ansible -m fetch -a “src=/root/123 dest=/root”

指定路径目录进行保存

ansible -m fetch -a “src=/root/Ssh.py dest=/root/kel/ flat=yes”

设置文件属性

ansible -m file -a “path=/root/123 owner=kel group=kel mode=0644”

创建目录

ansible -m file -a “path=/tmp/kel state=directory mode=0755”

修改权限

ansible -m file -a “path=/tmp/kel mode=0444”

创建软连接

ansible -m file -a “src=/tmp/1 dest=/tmp/2 owner=kel state=link”

添加其中的节的值

ansible -m ini_file -a “dest=/tmp/kel section=kel option=kel value=kel mode=0600 backup=yes”

基础模块使用

并行和Shell命令

设置ssh-agent记住认证
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa

10秒内重启

$ ansible -a “/sbin/reboot” -f 10

在默认情况下,ansible使用的是当前用户,当你需要使用其他用户的时候,可以使用选项-u username

$ ansible -a “/usr/bin/foo” -u username

要使用sudo的时候

$ ansible -a “/usr/bin/foo” -u username —sudo[—ask-sudo-pass]
—ask-sudo-pass(-K)此选项是用来询问sudo的密码,如果设置了,如果未设置,那么无需使用

也可以在sudo到别的用户来进行执行

$ ansible -a “/usr/bin/foo” -u username -U otheruser[—ask-sudo-pass]

参数-f 10表示并发进行,也就是10个进程同时运行,在使用的时候,默认的情况下为5,选择合适的数据,从而使得系统能够进行处理
  参数-m表示选择的模块,在默认情况下,command是默认的模块
Command不适用于有shell变量的情况,也不适用于有管道符的情况,如果要使用此种情况,那么可以使用shell模块

使用Shell模块

$ ansible -m shell -a ‘echo $TERM’

文件传输

传输文件到很多主机

$ ansible -m copy -a “src=/etc/hosts dest=/tmp/hosts”

修改用户和用户组权限

$ ansible -m file -a “dest=/srv/foo/a.txt mode=600”
$ ansible -m file -a “dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan”

创建目录

$ ansible -m file -a “dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory”

管理包

确定一个包已经安装,但是不更新
ansible -m yum -a “name=acme state=present”

确定一个包安装的是指定版本
ansible -m yum -a “name=acme-1.5 state=present”

确定一个包是最新包
ansible -m yum -a “name=acme state=latest”

确定一个包未安装
ansible -m yum -a “name=acme state=absent”

用户和用户组

创建用户和管理已经存在的用户和组

$ ansible -m user -a “name=foo password=
$ ansible -m user -a “name=foo state=absent”

服务管理

确定一个服务正在运行
$ ansible -m service -a “name=httpd state=started”

重启一个服务
ansible -m service -a “name=httpd state=restarted”

确定一个服务是停止的
ansible -m service -a “name=httpd state=stopped”

限制后台运行时间

后台运行总是耗费比较长的时间,从而其状态在随后总是能够查看的,如果踢掉主机,又不想轮训

$ ansible -B 3600 -P 0 -a “/usr/bin/long_running_operation —do-stuff”

如果要检查服务的状态,可以使用模块async_status,传递job id
$ ansible -m async_status -a “jid=488359678239.2844”

轮训是内建的

$ ansible -B 1800 -P 60 -a “/usr/bin/long_running_operation —do-stuff”
        参数-B表示运行最多30分钟,30*60,-P 60 轮训其状态每60S,
        当时间运行在-B参数后的时间之后,此服务会被停止运行。
        可以使用参数—forksvalue,来确保服务尽快运行

收集信息

$ ansible -m setup