ansible基本使用

本文介绍了如何使用Ansible进行自动化运维,包括简单配置、执行状态、免密操作,以及常用模块如shell、unarchive、copy、fetch、file、lineinfile等的使用方法。此外,还讲解了Ansible-playbook的使用,如YUML语法、playbook检测、tags使用、handlers和notify、变量、模板和条件判断等。适合想要学习Ansible自动化运维的读者。
摘要由CSDN通过智能技术生成

Ansible

由于公司升级服务器和处理问题抓包,

可能需要同时操作多台服务器(繁琐的解压、copy、备份),

我便发现了ansible工具!

现在通过下班时间部署在自己虚拟机测试与总结,有错误与不足的地方请提醒,

参考资料有博客园大神分享与同事分享文档!(本文章里都有附属链接)

欢迎交流:

安装ansible参考博客链接

本版为ansible --version:ansible 2.9.21

简单配置

/etc/ansible/:ansible目录

  • vim ansible.cfg

    • #forks = 5 #ssh并发数量

      #ask_pass = True #使用密钥还是密码远程,True代表使用密码

      #host_key_checking = False #是否校验密钥(第一次ssh时是否提示yes/no)

  • 打开/etc/ansible/host文件最下边添加自定义模块名

    • 示例:[test] #模块名字
      • 192.168.XXX.XXX
执行状态
  • 黄色:成功执行并伴随着状态的改变
    绿色:成功执行并且没有发生状态的改变
    红色: 执行失败
免密操作
  • 方式一

    • 将主机密钥发送到控制的机器
      • ssh-keygen
      • ssh-copy-id 1.1.1.1 发送秘钥对到这个ip
  • 方式二

    • vim host
    • 示例:
    • [db] #自定义模块名
    • 172.25.70.1 ansible_ssh_user=“root” ansible_ssh_pass=“redhat”
    • 地址后加 ansible_ssh_user=用户名 ansible_ssh_port=端口 ansible_ssh_pass=密码
测试&帮助操作

ansible test --list #查看自定义test模块列表信息

ansible test -m ping #测试服务器是否连接成功

ansible-doc -l #列出所有模块

ansible-doc -l | grep yum #在所有模块中过滤关键词

ansible-doc yum #查看模块帮助

ansible -h #查看帮助选项

常用模块

shell模块

  • 可以使用"<",">","|",";","&"等符号特殊符号

    示例:

    ansible test -m shell -a ‘df -h’ #查看磁盘挂载情况

  • ansible test -m shell -a ‘ls -l /home/’ #查看home目录

  • ansible test -m shell -a “rm -rf ~/*” #删除所有文件

  • ansible test -m shell -a ‘mkdir /home/2233.txt’ #创建文件 (报错不用理会)

  • ansible test -m shell -a ‘tar -cf ybt.tar.gz /home/*’ #压缩目录文件

  • chdir 在执行命令前,进入到指定目录中
    示例:ansible test -m shell -a ‘chdir=/home/ ls-l’

script模块
  • 执行本目录下脚本copy到远程主机后台执行后删除 (test为模块名)
  • 示例:ansible test -m script -a “./joben.sh”
  • 示例:ansible test -m script -a ‘chdir=/root/cin/etc/ A/bak.sh’
  • chdir=在执行命令前,进入到控制主机指定目录中 在相对路径A执行脚本bak.sh
unarchive模块
  • 管理机上的压缩文件到远程主机解压:
    ansible test -m unarchive -a “src=本地目录压缩包 dest=远程要解压到的目录 mode=0755 copy=yes”

    • 示例:ansible test -m unarchive -a ‘src=/root/jo.tar.gz dest=/root/ copy=yes’
  • 解压远程主机上的文件到目录:
    ansible all -m unarchive -a “src=远程主机/目录/文件 dest=远程要解压到的目录 mode=0755 copy=no” #mode可省略

  • owner=修改属主
    group=修改属组

    mode= 修改权限

copy模块
  • ansible test -m copy -a “src=本地 dest=目标”

  • 以下是copy并备份示例(注:文件内容一样不备份不替换!)backup=no 不备份

  • (注:文件内容不一样,直接替换)

  • 示例:ansible test -m copy -a "src=/test/test1.txt dest=/usr/local/ backup=yes "

  • 示例:ansible test -m copy -a ‘src=kk.kk.l dest=/home/’ # 默认将本目录文件copy到远程机

  • src=本地 dest=目标
    owner=修改属主
    group=修改属组

    mode= 修改权限

fetch模块

fetch模块与copy类似,但是作用相反,可以将其他主机的文件拷贝到本地

  • ansible test -m fetch -a “src=目标路径 dest=本地路径”
  • ansible test -m fetch -a ‘src=/home/test.txt dest=./’
file模块
path=/路径/文件  #" path + file " = " dest + file " = " name + file "
state=选项
owner=修改属主
group=修改属组
mode= 修改权限
state	 absent	将数据进行删除
state	 directory	创建一个空目录信息
state	 file	查看指定目录信息是否存在
state	 touch	创建一个空文件信息
state	 hard/link	创建链接文件
  • ansible test -m file -a ‘path=/home/bi.txt state=touch’ # 创建文件

  • ansible test -m file -a ‘path=/home/bi.txt state=absent’ # 删除文件或目录

  • ansible test -m file -a’path=/home/* state=absent’ # 删除文件

  • ansible test -m file -a ‘path=/home/test/ state=directory’ # 创建目录

  • ansible test -m file -a “path=/home/mydir owner=sshd group=dc mode=0777” # 修改权限和组

  • 创建软连接示例:src源文件 path存放软件路径文件

    • ansible test -m file -a ‘src=/home/l.txt path=/home/k state=link’
  • ansible test -m file -a ‘src=/home/l.txt path=/home/kke state=hard’ # 创建硬链接

lineinfile模块

单个文件添加内容

  • ansible test -m lineinfile -a “path=目标路径 line=‘添加的内容’”
  • ansible test -m lineinfile -a “path=/home/test.txt line=‘strive’”
  • 在内容之后插入(insertafter)
  • ansible test -m lineinfile -a “path=目标路径 line=‘添加的内容’ insertafter=‘在哪个位置之后’”
  • ansible test -m lineinfile -a “path=/home/test.txt line=‘shen’ insertafter=‘strive’”
replace模块
  • 替换
  • ansible test -m replace -a “path=目标路径 regexp=旧内容 replace=新内容”
  • ansible test -m replace -a “path=/home/test.txt regexp=‘hello’ replace=‘hello wrold’”
user模块

点击参考博客

  • ansible test -m user -a ‘name=shen’ # 创建用户

  • 创建用户:dba,使用BASH Shell,附加组为admins,dbagroup,家目录为/home/dba,注意:附加组必须为已经存在的组。

  • ansible test -m user -a “name=dba groups=admins,dbagroup append=yes home=/home/dba shell=/bash/shell state=present”

  • groups设定,groups=group1,group2.。。。

    增量添加属组,append=yes

    状态,state=present

    家目录:home=/home/dba

    shell:shell=/bash/shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z4bs0Xss-1628340828393)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210702171019665.png)]

  • ansible test -m user -a ‘name=dba groups=shen’ # 修改用户属组

  • ansible test -m user -a ‘name=shen remove=yes state=absent’ #删除用户shen

  • 修改密码:

    • password_hash:# 加密函数

    • ansible test -m user -a “name=dudu password={ {‘123’| password_hash(‘sha512’)}}”

    • 密码为123 password_hash(‘sha512’)}}为固定格式

cron定时任务

定时任务模块:点击参考博客

参数
day= #日应该运行的工作( 1-31, *, */2, )
hour= # 小时 ( 0-23, *, */2, )
minute= #分钟( 0-59, *, */2, )
month= # 月( 1-12, *, /2, )
weekday= # 周 ( 0-6 for Sunday-Saturday,, )
job= #指明运行的命令是什么
name= #定时任务描述
reboot # 任务在重启时运行,不建议使用,建议使用special_time
special_time #特殊的时间范围,参数:reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)
state #指定状态,present表示添加定时任务,也是默认设置,absent表示删除定时任务
user # 以哪个用户的身份执行

示例:ansible test -m cron -a ‘name=“定时任务测试” minute=/5 hour=/1 job=“echo 1 >> /root/1.txt”’ #设置定时任务

查看:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NFm3MZ9P-1628340828396)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210705114056420.png)]

删除刚刚的定时任务:ansible test -m cron -a “name=‘定时任务测试’ minute=/5 hour=/1 job=‘echo 1 >> /root/1.txt’ state=absent”</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybt&kexiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值