暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Ansible工具的基本使用

IT那活儿 2024-10-31
76

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


什么是ansible
ansible是一个自动化工具,可以实现批量部署、配置并启动应用服务,可以协助操作人员节省大量重复工作。
其安装方式有源码安装,yum安装等方式。具体步骤也可以查看早前公众号发文Ansible安装和配置本文使用yum安装。
yum安装,基于EPEL源:
# yum install ansible

测试:

#ansible –versionansible 2.5.3 config file
= None configured module search path
= [u'/root/.ansible/plugins/modules',u'/usr/share/ansible/plugins/modules'] ansible python module location
= usr/local/lib/python2.7/site-packages/ansible-2.5.3-py2.7.egg/ansible executable location
= /usr/local/bin/ansible python version
= 2.7.8 (default, May 29 2018, 14:06:44) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]


ansible的主机清单
要想使用ansible执行批量任务,首先需要主机清单文件,默认是/etc/ansible/hosts,当然也可以使用任意清单文件,使用-i 参数进行引用。
主机清单文件格式,遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;如果目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号来标明:
格式1:
host:[port]

格式2:

[groupname]
host1
host2
host3

格式3:

[groupname]
  host[1:3]


ansible配置文件

配置文件/etc/ansible/ansible.cfg,以下是常用配置项解释:

  • inventory = /etc/ansible/hosts

    主机清单文件;

  • library = /usr/share/my_modules/

    库文件存放目录;

  • remote_tmp = ~/.ansible/tmp

    临时py命令文件存放在远程主机目录;

  • local_tmp = ~/.ansible/tmp

    本机的临时命令执行目录;

  • forks = 5  

    默认并发数;

  • sudo_user = root

    默认sudo用户;

  • ask_sudo_pass = True

    每次执行ansible命令是否询问ssh密码;

  • remote_port = 22

    远程主机端口号;

  • host_key_checking = False

    禁用第一次连接的key检查;

  • log_path = /var/log/ansible.log

    默认ansible不记录日志,启用此项开启日志记录。

ansible常用命令集

4.1 ansible <host-pattern> [-m module_name] [-a args]

选项:

  • --version

    查看版本相关信息。

  • -m module

    指定模块,默认为command。

  • -v|–vv|-vvv

    详细过程。

  • --list|--list-hosts

    显示主机列表。

  • -k|--ask-pass

    提示连接密码,默认Key验证。

  • -K|--ask-become-pass

    提示输入sudo。

  • -C|--check

    检查执行,并不是真正执行。

  • -T|--timeout=TIMEOUT

    执行命令的超时时间,默认10s。

  • -u|--user=REMOTE_USER

    执行远程执行的用户。

  • -b|--become

    代替旧版的sudo切换。

4.2 host-pattern→

  • all

    表示主机清单中所有的主机。

  • groupname

    表示组中的所有主机。

  • host

    指定某台主机,但是此主机必须在主机清单中。

    支持通配符(*)、逻辑与(:&)或(:)非(:!)和正则表达式(~)。

4.3 ansible-doc

用法:
ansible-doc [options] [module...]
选项:
  • -a 显示所有模块的文档;
  • -l, --list 列出可用模块;
  • -s, --snippet 显示指定模块的playbook片段。 
4.4 ansible-playbook
注:该模块也是重点的内容,后面我们可以拿出章节单独讲述详细用法。
执行.yml剧本文件。
  • -C | --check 检查执行,不真正执行;
  • -t tags 执行指定的标签;
  • --list-tags 列出剧本中的所有的标签;
  • --list-tasks 列出剧本中所有的任务;
  • --list-hosts 列出剧本中所有的主机;
  • --limit host_group_name 只针对主机列表中的主机执行;
  • -v | -vv | -vvv 显示详细信息;
  • -e 'var=value' 自定义变量赋值。
4.5 ansible-vault
管理加密解密yml文件。
  • encrypt 加密;
  • decrypt 解密;
  • view 查看;
  • edit 编辑加密文件;
  • rekey 修改口令;
  • create 创建新文件。
4.6 ansible-console
ansible的交互式终端,root@all (3)[f:5]$:执行用户@当前操作的主机组 (当前组的主机数量)[f:并发数]$。
  • forks #:设置并发数;
  • cd:切换主机组或主机;
  • list:列出当前主机列表;
  • help:获取帮助。


常用模块
接下来说一下常用命令,也是本文的重点内容:
shell 可以批量执行命令
~]# ansible all -m shell -a 'echo $HOSTNAME'
script 在远程主机上执行本地脚本
~]# ansible all -m script -a '/root/ansible/host.sh'
copy 将本地文件复制至远程主机
  • backup 复制覆盖时先备份;
  • content 指定一些内容当文件复制;
  • dest 目标路径;
  • mode 权限;
  • owner 所有者;
  • src 源路径。
~]# ansible all -m copy -a 'src=/home/test dest=/home/config backup=yes'
yum 管理软件包模块
~]# ansible all -m yum -a 'name=vsftpd state=latest'
cron 任务计划
  • name 名称;
  • job 作业;
  • disabled=true | false 禁用|启用;
  • state=absent 删除;
  • day 天;
  • hour 小时;
  • minute 分钟;
  • month 月;
  • weekday 星期。
~]#ansible all -m cron -a 'minute=* weekday=1,3,5 
job="/usr/bin/wall FBI warning" name=warningcron'
~]#
ansible all -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'

关于常用模块的具体用法我们在下一篇文章里跟大家详细描述一下,大家也可以查看官方文档的说明。

END


本文作者:黄 凭(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论