1,command模块
一般用于执行linux的命令,不支持管道符和重定向。
2,shell模块 相当于command的升级版,也可以执行linux命令,支持管道符和重定向
3,cron 模块 在远程主机生成定时任务
分 时 日 月 周
minute hour day mouth weekday job=执行的命令
name要加
4,user模块:
远程管理用户的模块,创建用户
system=yes | no
声明是普通还是系统用户
yes程序用户
no普通用户
登录的shell还是需要用户自己声明。
remove=yes | no
生成用户时是否生成家目录。
userdel -r
password,创建密码
5,group模块,创建用户组
6,ping模块测试和远程主机的连通性。
只有在/etc/absible/hosts文件当中声明的主机,ansible的服务端才可以进行远程操作。
7,hostname模块
改主机名
ansible 192.168.176.50 -m hostname -a 'name=test2'
8,copy 模块:
用于复制指定的主机文件到远程主机的模块
常用参数:
dest:指出要复制的文件在哪,必须使用绝对路径。如果源目标是目录,指目标也得是目录。如果目标的文件存在,会覆盖原有内容。
src:复制文件的源,最好使用绝对路径,源目标是目录,指目标也得是目录
owner:指出文件的所有者
group:指定文件的所在组
content:从主机复制指定的内容到目标主机,content就不能使用src了
mode:指定复制之后的文件的权限
ansible 192.168.176.50 -m copy -a 'src=/opt/123 dest=/opt/123.txt owner=guoqi mode=600'
练习:在日标主机创建- -个用户guoqi system-yes shell nologin, 复制文件ky32. txt,
isy32.txt所有者和所在组都是guoqi,权限是600.
ansible 192.168.176.50 -m copy -a 'src=/opt/ky32.txt dest=/opt/ky32.txt owner=guoqi group=guoqi mode=600'
ansible 192.168.176.50 -m copy -a 'src=/opt/guoqi/ dest=/opt/guoqi1/ mode=777'
复制目录时,还是复制完整的目录,即目录当中不能为空。目录里面要有一个文件
指定要打印的内容
ansible 192.168.176.50 -m copy -a 'content="hello world!" dest=/opt/hello.txt'
ansible 192.168.176.50 -a 'cat /opt/hello.txt'
剪切:
ansible 192.168.176.50 -a 'mv /opt/hello.txt /opt/wangdefu.txt'
ansible 192.168.176.50 -a 'cat /opt/wangdefu.txt'
9,file模块 文件模块,跟目录无关
owner
group
mode
state=link 创建连接文件
state=touch 创建文件
state=directory 创建目录
state=absent 删除文件
ansible 192.168.176.50 -m file -a 'path=/opt/cc.txt state=touch'
#path=/opt/cc.txt:声明客户机的路径和文件名称
#state=touch:类型为创建文件
ansible 192.168.176.50 -m file -a 'owner=cc group=cc mode=777 path=/opt/cc.txt'
练习
file模块创建一个文件,ky32.txt 所有者和所在组cc 权限700
ansible 192.168.176.50 -m file -a 'path=/opt/ky32.txt state=touch'
ansible 192.168.176.50 -m file -a 'owner=cc group=cc mode=700 path=/opt/ky32.txt'
设置连接文件
设置软连接
ansible 192.168.176.50 -m file -a 'path=/opt/cc.txt.link src=/opt/cc.txt state=link'
练习:
给/etc/fstab创建一个软连接, 这个文件是主机/ opt/ fstab . bak复制过来的文件,复制的
文件/opt/fstab. bak在目标主机的/opt下,创建- -一个文件fstab. link作为fstab . bak的软连接。:
ansible 192.168.176.50 -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak'
ansible 192.168.176.50 -m file -a 'path=/opt/fstab.bak.link src=/opt/fstab.bak state=link'
远程删除文件
ansible 192.168.176.50 -m file -a 'path=/opt/cc.txt.link state=absent'
也可以创建目录:
ansible 192.168.176.50 -m file -a 'path=/opt/chen state=directory'
10,yum模块
在远程主机上安装与卸载软件包
在目标主机上的操作都是后台运行,不影响其他用户的操作
安装
ansible 192.168.176.50 -m yum -a 'name=tree'
卸载:
ansible 192.168.176.50 -m yum -a 'name=tree state=absent'
练习:查询远程主机httpd的状态2、开启3、访问
启动不要使用service模块
ansible 192.168.176.50 -m yum -a 'name=httpd'
ansible 192.168.176.50 -a 'systemctl start httpd'
ansible 192.168.176.50 -m shell -a 'echo "this is httpd" > /var/www/html/index.html'
ansible 192.168.176.50 -a 'curl 192.168.176.50'
11,service/systemd 模块
state=started | stopped | restarted
enabled=true表示是否设置开机自启,如果不加,默认就是开机不自动启动。
runlevel:配合enabled的, 开机自启,可以设置运行级别。在命令行可用设置,但是不生效,要在playbook当中使用。
ansible 192.168.176.50 -m service -a 'enabled=true name=httpd state=restarted'
ansible webservers -m yum -a 'name=epel-release'
ansible webservers -m yum -a 'name=nginx'
ansible 192.168.176.50 -m service -a 'enabled=true name=nginx state=restarted'
ansible 192.168.176.50 -m shell -a 'echo "this is nginx" >/usr/share/nginx/html/index.html'
ansible 192.168.176.50 -a 'curl 192.168.176.50'
12,script 模块
运行本地脚本,然后把结果输出到目标主机
vim test.sh
echo "hello world" > /opt/test2.txt
chmod 777 test.sh
ansible all -m script -a 'test.sh'
ansible all -a 'cat /opt/test2.txt
vim test1.sh
ansible all -m script -a 'test1.sh'
ansible all -a 'cat /opt/123
作业
13,set up模块
set up查看目标主机的环境系统(facts),目标节点的系统信息。
不加条件会显示全部。
ansible 192.168.176.50 -m setup
常用组件
加上条件:根据模块名称来查。
IP地址:
ansible 192.168.176.50 -m setup -a 'filter=*ipv4*'
cpu:
ansible 192.168.176.50 -m setup -a 'filter=*ansible_processor'
查看内存
menory
ansible 192.168.176.50 -m setup -a 'filter=*mem*'
查看内核:
ansible 192.168.176.50 -m setup -a 'filter=*proc*'
查看系统信息:
ansible 192.168.176.50 -m setup -a 'filter=*os*'
ansible 192.168.176.50 -m setup -a 'filter=*system*'
查看硬盘:
ansible 192.168.176.50 -m setup -a 'filter=*dev*'
主机清单进行管理
快速的声明主机范围。
如何取消shh密钥对登录
ansible_host 连接时的ip地址
ansible_prot 声明对方的连接端口,默认是ssh的22端口
ansible_user 指定路径是使用对方主机的用户名,不指定主机执行ansible的用户即为使用目标主机的用户名。
ansible_password 指定连接sshs时的密码(目标主机的用户密码)
ansible_become 提升用户权限
ansible_become root
ansible_become_password 指定切换用户的密码。(免秘钥登录才可以实现。 )
71行取消注释
对所有webservers进行设置:
也可以对全部进行设置
组嵌套: