Ansible模块

1.command模块

一般用于执行linux的命令,不支持管道符和重定向

2.shell模块

相当于command的升级版,也可以执行linux命令,支持管道符和重定向

3.cron模块

在远程主机生成定时任务

分时日月周

minute hour day month weekday

job=

name 声明计划任务的名称,可以不加,以后声明定时任务的名称是必须的

4.user模块

远程管理用户的模块,创建用户

system=yes|no

声明是普通用户还是系统用户

yes 程序用户

no 普通用户

登录的shell还是需要用户自己声明

remove=yes|no 删除用户时是否删除家目录

password创建密码

5.gruop模块

创建用户组

6.ping模块

测试和远程主机的连通性

只有在/etc/ansilble/hosts文件当中声明的主机,Ansible的服务端才可以进行远程操作。

7.hostname模块

远程修改主机名

ansible 192.168.233.20 -m hostname -a 'name=guoqi'

8.copy模块

用于复制指定的主机文件到远程主机的模块

常用的参数:

dest 指出要复制的文件在哪,必须使用绝对路径,如果源目标是目录,指目录也得是目录。如果目标的文件存在,会覆盖原有内容

src 复制文件的源,最好使用绝对路径,源目标是目录,指目标也得是目录

owner:指出文件的所有者

group 指定文件的所有者

content 从主机复制指定的内容到目标主机,content就不能使用src

mode 指定复制之后的文件的权限

在复制目录时,还是复制完整的目录,即目录当中不能为空,里面最终必须有一个文件

ansible 192.168.233.20 -m copy -a 'src=/opt/123 dest=/opt/123.txt owner=guoqi mode=655'

现在第一步,在目标主机创建一个用户guoqi system=yes shell nologin,复制文件ky32.txt ,ky32.txt 所有者和所在组都是guoqi 权限是600

ansible 192.168.66.16 -m user -a 'name=guoqi666 system=yes shell=/sbin/nologin'

ansible 192.168.66.16 -m copy -a 'src=/opt/ky32.txt dest=/opt/ky32.txt owner=guoqi666 group=guoqi666 mode=600'

复制目录,目录的名称guoqi 复制后为guoqi1 mode 777

ansible 192.168.233.30 -m copy -a 'content="hello world!" dest=/opt/hello.txt'

ansible 192.168.233.30 -a 'mv /opt/hellow.txt /opt/wangdefu.txt'

9.file模块

管理文件属性,文件模块,跟目录无关

owner:指出文件的所有者

group 指定文件的所有者

mode 指定文件的权限

state=link 创建连接文件

state=touch 创建文件

state=absent 删除文件

ansible 192.168.233.20 -m file -a 'path=/opt/guoqi.txt state=touch'

ansible 192.168.233.20 -m file -a 'owner=guoqi group=guoqi1 mode=777 path=/opt/guoqi.txt

file模块创建一个文件,ky32.txt 所有者和所在组guoqi 权限700

ansible 192.168.66.16 -m file -a 'path=/opt/guoqi.txt state=touch owner=guoqi group=guoqi mode=700'

ansible 192.168.233.30 -m file -a 'path=/opt/ky32.link src=/opt/ky32.txt state=link'

给/etc/fastab创建一个软连接,这个文件是目标主机/opt/fstab.bak 复制过来的文件,复制的文件/opt/fstab.bak在目标主机的/opt下,创建一个文件fsatb.link作为fatab.bak

ansible 192.168.66.16 -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak'

ansible 192.168.66.16 -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'

ansible 192.168.66.16 -m file -a 'path=/opt/fstab.link state=absent'

10.yum模块

远程主机上安装与写在软件包

ansible 192.168.66.16 -m yum -a 'name=httpd'

在目标主机上

ansible 192.168.66.16 -m yum -a 'name=tree starte=absent'

1.查询 远程主机上的httpd 2.打开httpd 3访问httpd(this is httpd)

ansible 192.168.66.16 -m yum -a 'name=httpd'

ansible 192.168.66.16 -a 'systemctl status httpd'

ansible 192.168.66.16 -a 'systemctl start httpd'

ansible 192.168.66.16 -a 'systemctl status httpd'

ansible 192.168.66.16 -m copy -a 'content="this is httpd" dest=/var/www/html/index.html'

##

ansible 192.168.66.16 -m shell -a 'echo this is httpd > var/www/html/index.html'

##

ansible 192.168.66.16 -a 'curl 192.168.66.16'

11.service /systemd模块

name 设定管理服务的名称

state=started | stopped | restarted 管理动作

enabled=true 表示是否设置开机自启,如果不加,默认就是开机不自动启动

runlevel:配合enabled的,开机自启,可以设置运行级别 在命令可以设置,但是不生效,要在palybook当中使用

ansible 192.168.66.16 -m service -a 'enabled=true name=httpd state=restarted'

安装nginx 设置为开机自启动,设置访问页面this is nginx

ansible 192.168.66.17 -m yum -a 'name=epel-release'

ansible 192.168.66.17 -m yum -a 'name=nginx'

ansible 192.168.66.17 -m service -a 'enabled=true name=nginx state=started'

ansible 192.168.66.17 -m shell -a 'echo this is nginx > /usr/share/nginx/html/index.html'

ansible 192.168.66.17 -a 'curl 192.168.66.17'

12.script模块

运行本地脚本,然后把结果输出到目标主机

vim test1.sh

echo "hello word" > /opt/test22222.txt

chmod 777

ansible all -m script -a 'test1.sh'

写一个shell的脚本,内容:touch 123 echo "郭旗真帅 " > 123 在所有主机都生效

vim ggg.sh

touch /opt/123

echo "郭旗真帅" > /opt/123

ansible all -m script -a 'ggg.sh'

13.setup模块

setup查看目标主机的环境系统(facts),目标节点的系统信息

ansible 192.168.233.20 -m setup

ansible all -m setup -a 'filter=*ipv4'

如果查看内存

ansible all -m setup -a 'filter=*memory*'

如歌查看cpu

ansible all -m setup -a 'filter=*processor'

如何查看内核

ansible all -m setup -a 'filter=*proc*'

如果查看使用系统的版本 windos

ansible all -m setup -a 'filter=os' #windows

如果查看使用系统的版本

ansible all -m setup -a 'filter=*system*'

如果查看硬盘

ansible all -m setup -a 'filter=*dev*'

14.主机清单

ansible 可以管理上千台主机

192.168.233.6[1:3]

vim /etc/ansible/hosts

ansible webservers -m ping

主机清单管理组当中的变量名

ansible_host 连接时的ip地址

ansible_port 声明对方的连接端口 默认是ssh的22端口

ansible_user 指定连接时使用对方主机的用户名,不指定主机执行ansible的用户即为使用目标主机的用户名

ansible_password 指定连接ssh时的密码(目标主机的用户密码)

ansible_become 提升用户权限

ansible_become root

vim /etc/ansible/ansible.cfg

Ansible模块_第1张图片

ansible 192.168.233.40 -m ping

如果有多个主机,声明组变量,且密码一样

Ansible模块_第2张图片

声明所有

Ansible模块_第3张图片

如果实现组嵌套

你可能感兴趣的:(ansible,网络,服务器)