临时命令
临时命令称为ad-hoc 命令,是一个相对于ansile playbook的概念。
临时命令(/usr/bin/ansible)用来完成简单的操作, Ansible playbook(/usr/bin/ansible-playbook)用来完成复杂的操作。两者的关系就类似于在命令行敲入shell命令和 写shell scripts两者之间的关系。
临时命令语法:ansible hosts -m module_name(模块名) -a job(对主机进行什么样得操作)
注意:因为临时命令这里需要用到模块,所以Ansible的模块就在这里介绍了,在后面写ansible playbook的时候,这些内容也可以用到。
ping模块
ansible all -m ping
command模块
command模块作用:在远程主机上执行指定的命令。
注意:使用command模块在远程主机中执行命令时,不会经过shell的处理,不能”<”, “>”, “I”, “;“和”&”这些符号,即不能进行重定向、管道符等操作。
ansible all -m command -a 'ls /root/'ansible all -m command -a 'cat /root/deployments/nginx-deployment.yaml'ansible all -m command -a 'cp /root/deployments/nginx-deployment.yaml /root/'ansible all -m command -a 'sh test.sh'
command模块的常用参数:
- creates:当指定的文件存在时,就不执行对应命令,如:
ansible all -m command -a 'creates=/root/deployments ls /root/'
- removes:当指定的文件不存在时,就不执行对应命令,如:
ansible all -m command -a 'removes=/root/test ls /root/'
作用:在远程主机上执行复杂的命令,可以使用管道符等。
ansible all -m shell -a 'ls /root/ | grep dep'
shell模块可以使用的参数和command模块基本是一样的,可参考command模块。
user模块
作用:管理用户
参数:
- name:用户名
- group:用户组,当不使用 group 设置主组时,默认主组与用户名相同。
- state:可选值有 present、absent,默认值为 present,表示用户需要存在,当设置为 absent 时表示删除用户。
- remove:当 state 的值设置为 absent 时,表示要删除远程主机中的用户,但不会删除用户的家目录等信息,这是因为 remove 参数的默认值为 no,如果设置为yes,在删除用户的同时,会删除用户的家目录。
- password:用户密码。
- 注意:这个密码不能是明文的密码,而是一个对明文密码”加密后”的字符串,相当于
/etc/shadow文件中的密码字段,可以使用python命令生成明文密码对应的加密字符串:import crypt; crypt.crypt('666666','123')。’666666’是密码,’123’是盐值,即加密干扰值,可以随便填写。
- 注意:这个密码不能是明文的密码,而是一个对明文密码”加密后”的字符串,相当于
#新增用户:ansible all -m user -a 'name=user01'#新增用户并指定密码:ansible all -m user -a 'name=user01 password=12EvAbXpnJqLU'#新增用户并设定用户的组:ansible all -m user -a 'name=user01 group=jinguang append=yes'#删除用户和家目录:ansible all -m user -a 'name=user01 state=absent remove=yes'
group模块
作用:管理组
#1.创建组并指定gidansible all -m group -a 'name=group01 gid=1100'#2.删除组ansible all -m group -a 'name=group01 state=absent'
copy模块
作用:拷贝文件
参数:
- src:要拷贝的文件或目录
- dest:目标目录
- content :当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。
- force: 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
- backup : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。
- owner : 指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。
- group : 指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。
- mode : 指定文件拷贝到远程主机后的权限,如果你想将权限设置为”rw-r—r—“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。
#拷贝文件ansible all -m copy -a 'src=/root/123.txt dest=/tmp/'#将特定内容覆盖到远程主机文件中ansible all -m copy -a "content='456' dest=/tmp/123.txt"#拷贝文件并设置好属主,属组,权限ansible all -m copy -a 'src=/root/123.txt dest=/tmp/ owner=root group=root mode=777'
fetch模块
作用:将被控制端的指定文件,拉取到Ansible服务器
ansible all -m fetch -a 'src=/root/123.txt dest=/tmp/'
unarchive模块
作用:解压
参数:
- src
- dest
- mode:解压后的权限
ansible all -m unarchive -a 'src=/root/123.txt.tar dest=/tmp/'
archive模块
作用:打包
参数:
- path:要打包的文件,可通过逗号分隔填写多个
- dest
ansible all -m archive -a 'path=/root/123.txt dest=/root/123.txt.tar'ansible all -m archive -a 'path=/root/123.txt,/root/456.txt dest=/root/txt.tar'ansible all -m archive -a 'path=/root/*.txt dest=/root/txt.tar'
service模块
作用:管理服务
参数:
- name:服务名称
- state:started开启 / stopped 停止 / reloaded 重新加载 / restarted重启
- enabled:yes/no 开机自启
ansible all -m service -a 'name=docker state=started'
file模块
作用:创建或者和删除远程主机上的文件或者目录
参数:
- path: 指定文件,如果远程主机上没有该文件,则进行创建
- state:touch 创建文件 directory 创建目录 absent 删除文件或者目录
- 注意:
- 当state=link时,表示创建软链接,当state=hard时,表示创建硬链接
- 用法:src=源文件名 path=目标链接文件名
- mode:修改权限
- owner:修改属主
- group:修改属组
#创建文件ansible all -m file -a 'path=/root/123.txt state=touch'#创建目录ansible all -m file -a 'path=/root/123 state=directory'#删除文件或目录ansible all -m file -a 'path=/root/123 state=absent'#创建软链接ansible all -m file -a 'src=/root/123.txt path=/tmp/123.txt state=link'#创建硬链接ansible all -m file -a 'src=/root/123.txt path=/tmp/123.txt state=hard'#修改属性ansible all -m file -a 'path=/tmp/123.txt owner=jinguang'ansible all -m file -a 'path=/tmp/123.txt group=jinguang'ansible all -m file -a 'path=/tmp/123.txt mode=777'
hostname模块
修改主机名:
ansible all -m hostname -a 'name=master'
apt模块
参数:
- name
- state:absent/present
#安装软件ansible all -m apt -a 'name=lrzsz'#卸载软件ansible all -m apt -a 'name=lrzsz state=absent'
cron模块
作用:定时执行任务
#1.每周2,4,6 间隔1分钟告警ansible db -m cron -a 'minute=* weekday=2,4,6 job="/usr/bin/wall warning" name=warningcron'#2.将设置好的计划任务禁用(必须带上 job=工作任务,name=计划任务名称)ansible db -m cron -a 'disabled=true name=warningcron job="/usr/bin/wall warning"'#3.开启某个计划任务(必须带上 job=工作任务,name=计划任务名称)ansible db -m cron -a 'disabled=false name=warningcron job="/usr/bin/wall warning"'#4.删除创建好的任务计划(必须带上 job=工作任务,name=计划任务名称)ansible db -m cron -a 'name=warningcron job="/usr/bin/wall warning" state=absent'
lineinfile模块
作用:替换文件中的内容,添加内容到指定文件位置
参数:
- path
- regexp:正则匹配
- line:要替换成的内容
- insertafter
- insertbefore
cat 123.txt123456789#替换指定行#ansible all -m lineinfile -a 'regex=^7 line='apulis789' path=/root/123.txt'#在指定行后插入行ansible all -m lineinfile -a 'line=apulis123 insertafter='123' path=/root/123.txt'#在指定行前插入行ansible all -m lineinfile -a 'line=apulis456 insertafter='456' path=/root/123.txt'
setup模块
作用:收集远程主机的一些基本信息。
参数:
- filter:用于进行条件过滤。如果设置,仅返回匹配过滤条件的信息。
#查看所有信息ansible all -m setup#过滤信息ansible all -m setup -a 'filter=ansible_all_ipv4_addresses'
filter常见过滤:
ansible_all_ipv4_addresses:仅显示ipv4的信息ansible_devices:仅显示磁盘设备信息ansible_distribution:显示是什么系统,例:centos,suse等ansible_distribution_major_version:显示是系统主版本ansible_distribution_version:仅显示系统版本ansible_machine:显示系统类型,例:32位,还是64位ansible_eth0:仅显示eth0的信息ansible_hostname:仅显示主机名ansible_kernel:仅显示内核版本ansible_lvm:显示lvm相关信息ansible_memtotal_mb:显示系统总内存ansible_memfree_mb:显示可用系统内存ansible_memory_mb:详细显示内存情况ansible_swaptotal_mb:显示总的swap内存ansible_swapfree_mb:显示swap内存的可用内存ansible_mounts:显示系统磁盘挂载情况ansible_processor:显示cpu个数(具体显示每个cpu的型号)ansible_processor_vcpus:显示cpu个数(只显示总的个数)ansible_python_version:显示python版本
