运维自动化发展历程及技术应用

ansible mysql 添加字段 ansible mysql模块_主机名

ansible mysql 添加字段 ansible mysql模块_主机名_02

ansible命令执行过程

  1.  加载自己的配置文件 默认/etc/ansible/ansible.cfg
  2.  加载自己对应的模块文件,如command
  3. 通过ansible将模块或命令生成对应的临时py文件,并将该 文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
  4.  给文件+x执行
  5. 执行并返回结果
  6.  删除临时py文件, sleep 0退出

执行状态:
绿色:执行成功并且不需要做改变的操作
黄色:执行成功并且对目标主机做变更
红色:执行失败

ansible常用模块

Command:在远程主机执行命令,默认模块,可忽略-m选项

  • ansible srvs -m command -a ‘service vsftpd start’
  • ansible srvs -m command -a ‘echo magedu |passwd --stdin wang’不成功
  • 此命令不支持 $VARNAME < > | ; & 等,用shell模块实现

Shell:和command相似,用shell执行命令

  • ansible srv -m shell -a ‘echo magedu |passwd –stdin wang’
  • 调用bash执行命令 类似 cat /tmp/stanley.md | awk -F‘|’ ‘{print $1,$2}’
  • &> /tmp/example.txt 这些复杂命令,即使使用shell也可能会失败,解决办法:写到脚本时, copy到远程,执行,再把需要的结果拉回执行命令的机器

Copy:从服务器复制文件到客户端

示例:将主机/etc/fstab文件复制到websrvs组中所有机器上,改名为fstab2,并将所有者改为xie。
若目标存在,则默认覆盖,并生成备份

ansible mysql 添加字段 ansible mysql模块_配置文件_03

 

在websrvs组中的目标主机上的/data/目录下生成selinux文件,并且内容为SELINUX=disable\nSELINUXTYPE

ansible mysql 添加字段 ansible mysql模块_ansible mysql 添加字段_04

 

Fetch:从客户端取文件至服务器端, copy相反,目录可先tar

示例:抓取目标主机上的fstab2文件到本机的/data/目录下

ansible mysql 添加字段 ansible mysql模块_配置文件_05

 

ansible mysql 添加字段 ansible mysql模块_配置文件_06

 【src只能抓取对文件,不能抓取目录,若要抓取目录,可先对目录打包,然后再抓取】
示例:将目标主机的/data目录打包到/root/data.rar,然后再将打包后的data.rar抓取到目标主机

ansible mysql 添加字段 ansible mysql模块_主机名_07

 [root@ansible data]#ansible websrvs -m fetch -a 'src=/root/data.rar dest=/data'

ansible mysql 添加字段 ansible mysql模块_主机名_08

File:设置文件属性

创建空文件 :
#ansible websrvs -m file -a 'name=/data/file1 state=touch mode=600'
针对改空文件创建软连接:
#ansible websrvs -m file -a 'src=/data/file1 dest=/data/file1-link state=link'
创建文件夹:
#ansible websrvs -m file -a 'path=/data/dir1 state=directory'
删除文件夹:
#ansible websrvs -m file -a 'path=/data/dir1 state=absent' 
清空目录数据:
#ansible websrvs -m file -a 'path=/data/  state=absent'

Hostname:管理主机名

将目标主机主机名改为centos66
#ansible 192.168.36.6 -m hostname -a 'name=centos66'【这样的更改是永久更改,直接改了文件名配置文件】

Cron:计划任务

查询计划任务:
#ansible websrvs -a 'crontab -l' 
创建计划任务:为目标主机创建计划任务,每十分钟,自动和172.20.0.1同步时间,并为该任务起名为synctime
#ansible websrvs -m cron -a 'minute=*/10 job="ntp 172.20.0.1 &> /dev/null" name=synctime'
禁用计划任务:(加disable=true)
#ansible websrvs -m cron -a 'disabled=true minute=*/10 job="ntp 172.20.0.1 &> /dev/null" name=synctime'
删除计划任务:(加state=absent)
#ansible websrvs -m cron -a 'state=absent minute=*/10 job="ntp 172.20.0.1 &> /dev/null" name=synctime'  

Yum:管理包

查看包是否安装:
#ansible websrvs -a 'rpm -q httpd' 
 安装包:(可以同时安装多个包,包名中间用逗号隔开即可)
#ansible websrvs -m yum -a 'name=httpd'
卸载包:(可以同时卸载多个包,包名中间用逗号隔开即可)
#ansible websrvs -m yum -a 'name=httpd state=absent'