ansible常用模块

hosts文件位于 /etc/ansible/ 目录记录着目标主机的ip ssh用户 密码等信息

1.ping测试连通性

1
ansible all -m ping

2.创建downloads目录

1
ansible all -m file -a "path=/work/admin/downloads state=directory"

3.复制文件到远程主机 copy模块

1
ansible all -m copy -a "src=/work/admin/downloads/hyperic-hqee-agent-x86-64-linux-5.8.4.tar.gz dest=/work/admin/downloads/"

4.查看文件

1
ansible all -m command -a "ls -al /work/admin/downloads/hyperic-hqee-agent-x86-64-linux-5.8.4.tar.gz"

5.远程解压压缩包

1
ansible java -m command -a "tar xf  /work/admin/downloads/jdk-7u80-linux-x64.tar.gz -C ~/"

6.启动服务 service模块

1
ansible mysqldb -m service -a 'name=puppet state=restarted enabled=yes'

7.创建用户 ansible user模块

1
ansible mysqldb -m user -a 'name=ansible state=present'

修改密码为 123456

1
ansible mysqldb -m raw -a 'echo 123456|passwd --stdin ansible'

8.copy模块

目的:把主控端/root目录下的’1.txt’文件拷贝到到指定节点上

1
# ansible mysqldb -m copy -a 'src=~/1.txt dest=/tmp/'

配置文件:

1
2
3
4
5
6
# vim /etc/ansible/hosts 

[mysqldb]
hostname1 ansible_ssh_host=192.168.20.57 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=c3root
hostname2 ansible_ssh_host=192.168.20.58 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=c3root
hostname3 ansible_ssh_host=192.168.20.59 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=c3root

测试:

1
2
# ansible mysqldb -m ping
# ansible mysqldb -m shell -a 'date'

ansible mysqldb -m user -a ‘name=ansible state=present’ —-创建用户ansible

ansible mysqldb -m raw -a ‘echo 123456|passwd –stdin ansible’ —-修改密码为123456

9.file模块

目的:更改指定节点上/tmp/t.sh的权限为755,属主和属组为root

命令:

1
ansible mysqldb -m file -a "dest=/tmp/1.txt mode=755 owner=root group=root"

10.group模块

目的:在所有节点上创建一个组名为nolinux,gid为2014的组

命令:

1
2
3
ansible mysqldb -m group -a 'gid=2014 name=nolinux'

ansible mysqldb -m group -a 'name=nolinux state=absent remove=yes'

11.user模块

目的:在指定节点上创建一个用户名为nolinux,组为nolinux的用户

命令:

添加用户:

1
2
3
# ansible mysqldb -m user -a 'name=nolinux groups=nolinux state=present'

# ansible mysqldb -a 'id nolinux'

删除用户:

1
2
3
# ansible mysqldb -m user -a 'name=nolinux state=absent remove=yes'

# ansible mysqldb -a 'id nolinux'

ansible mysqldb -m user -a ‘name=ansible state=present’ —-创建用户ansible

ansible mysqldb -m raw -a ‘echo 123456|passwd –stdin ansible’ —-修改密码为123456

12.yum模块

目的:在指定节点上安装 lrzsz 服务

命令:

1
ansible mysqldb -m yum -a "state=present name=lrzsz"

13.service模块

目的:启动指定节点上的 puppet 服务,并让其开机自启动

命令:

1
ansible mysqldb -m service -a 'name=puppet state=restarted enabled=yes'

14.script模块

目的:在指定节点上执行/root/a.sh脚本(该脚本是在ansible控制节点上的)

命令:

1
ansible mysqldb -m script -a '/root/a.sh

15.raw模块

目的:在10.1.1.113节点上运行hostname命令

命令:

ansible 10.1.1.113 -m raw-a 'hostname|tee'

16.get_url模块

目的:将http://10.1.1.116/favicon.ico文件下载到指定节点的/tmp目录下

命令:

ansible 10.1.1.113 -m get_url -a 'url=http://10.1.1.116/favicon.ico dest=/tmp'

17.synchronize模块

目的:将主控方/root/a目录推送到指定节点的/tmp目录下

命令:

ansible 10.1.1.113 -m synchronize -a 'src=/root/a dest=/tmp/ compress=yes'

执行效果:

delete=yes 使两边的内容一样(即以推送方为主)

compress=yes 开启压缩,默认为开启

–exclude=.git 忽略同步.git结尾的文件

18.ansible hosts

1
2
3
4
5
6
7
8
9
10
11
[server:all]
server-ops
server-dubbo


[server-ops]
server-ops1 ansible_ssh_host=192.168.101.3 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass="**************"

[server-dubbo]
server-dubbo1 ansible_ssh_host=192.168.101.33 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass="**************"
server-dubbo2 ansible_ssh_host=192.168.101.73 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass="**************"
-------------本文结束感谢您的阅读-------------