一般用于执行linux的命令,不支持管道符和重定向
相当于command的升级版,也可以执行linux命令,支持管道符和重定向
在远程主机生成定时任务
分时日月周
minute hour day month weekday
job=
name 声明计划任务的名称,可以不加,以后声明定时任务的名称是必须的
远程管理用户的模块,创建用户
system=yes|no
声明是普通用户还是系统用户
yes 程序用户
no 普通用户
登录的shell还是需要用户自己声明
remove=yes|no 删除用户时是否删除家目录
password创建密码
创建用户组
测试和远程主机的连通性
只有在/etc/ansilble/hosts文件当中声明的主机,Ansible的服务端才可以进行远程操作。
远程修改主机名
ansible 192.168.233.20 -m hostname -a 'name=guoqi'
用于复制指定的主机文件到远程主机的模块
常用的参数:
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'
管理文件属性,文件模块,跟目录无关
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'
远程主机上安装与写在软件包
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'
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'
运行本地脚本,然后把结果输出到目标主机
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'
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*'
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 192.168.233.40 -m ping
如果有多个主机,声明组变量,且密码一样
声明所有
如果实现组嵌套