0
点赞
收藏
分享

微信扫一扫

Ansible playbook格式 语法 Ansible playbook格式入门演示 基础了解

一、ansible发展史及功能

  1.1 ansible功能

  • 批量执行远程命令,可以控制多台主机进行操作
  • 批量安装和配置软件服务,可以对多台主机进行自动化的方式配置和管理各种服务
  • 编排高级的企业级复杂IT架构任务,例如:playbook、role
  • 提供自动化韵味工具的开发API,例如:jumpserver

  1.2 ansible特性

  • 模块化
  • 三个关键模块:Paramiko(python),pyYAML,Jinja2(模版语言)
  • 基于python语言实现
  • 部署简单,依赖于python和SSH
  • 安全,它是基于OpenSSH
  • 幂等性
  • 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构
  • 较强大的多层解决方案role

  1.3 ansible架构

  1.3.1 Ansible组成
  • INVENTORY:Ansible管理主机的清单 /etc/anaible/hosts 需要管理的服务清单
  • MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义
  • PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
  • API:供第三方程序调用的应用程序编程接口

  1.3.2 ansible命令执行来源
  • USER 普通用户,即SYSTEM ADMINISTRATOR
  • PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件
  • CMDB(配置管理数据库) API 调用
  • PUBLIC/PRIVATE CLOUD API调用

二、ansible安装及入门

  2.1 安装

  2.1.1 安装epel源和ansible

  2.1.2 查看ansible配置项 

  2.1.3 编辑hosts 

  2.1.4 远程连接虚拟机二 

  2.1.5 远程连接虚拟机三

  2.1.6 同时ping通两台虚拟机

  2.1.7 查看web主机名

  2.1.8 分别在web下创建文件test 
   2.1.9 分别在两台虚拟机上查看test文件

  2.1.10 免密登陆

  2.2 查看基本信息

  2.3 相关信息

  • /etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性,也可以在项目的目录中创建此文件,当前目录下如果也有ansible.cfg,则此文件优先生效,建议每个项目目录下,创建独有的ansible.cfg文件
  • /etc/ansible/hosts 主机清单
  • /etc/ansible/roles/ 存放角色的目录

  2.4 ansible主配置文件

    Ansible 的默认配置文件 /etc/ansible/ansible.cfg ,其中大部分的配置内容无需进行修改

  2.5 inventory主机清单文件

    默认的inventory file文件在:/etc/ansible/hosts

  2.6 ansible相关工具

  • /usr/bin/ansible 主程序,临时命令执行工具
  • /usr/bin/ansible-doc 查看配置文档,模块功能查看工具,相当于man ansible-doc -l |grep 关键字 具体模块名字
  • /usr/bin/ansible-playbook 定制自动化任务,编排剧本工具,相当于脚本
  • /usr/bin/ansible-pull 远程执行命令的工具
  • /usr/bin/ansible-vault 文件加密工具
  • /usr/bin/ansible-console 基于Console界面与用户交互的执行工具
  • /usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台

  2.6.1 ansible

    执行临时任务一次性任务

    格式:

    或、且、非 

  ansible执行命令过程

    执行返回结果

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

  2.6.2 ansible-doc

  2.6.3 ansible-console

  2.6.4 playbook

  2.7 模块

  2.7.1 Command模块

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

    注意:此命令不支持 $VARNAME < > | ; & 等,可能用shell模块实现,此模块不具有幂等性  

  2.7.2 shell模块

    功能:和command相似,用shell执行命令,支持各种符号,比如:*,$, >

    注意:此模块不具有幂等性

  2.7.3 scripts

  功能:在远程主机上运行ansible服务器上的脚本(无需执行权限)

  注意:此模块不具有幂等性

  2.7.4 copy模块

  功能:从ansible服务器主控端复制文件到远程主机

  注意: src=file 如果是没指明路径,则为当前目录或当前目录下的files目录下的file文件

  2.7.5 Get_url模块

    功能: 用于将文件从http、https或ftp下载到被管理机节点上

   2.7.6 Fetch

    功能:从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录

  2.7.7 File模块

     功能:设置文件属性,创建软链接等

path指定文件路径
state文件状态 有:新建(touch) 删除(absent) 文件夹(directory)  连接文件(link)等
src源文件
mode权限
owner属主
group属组
recurse递归

   2.7.8 stat模块

    功能:检查文件或文件系统的状态

    注意:对于Windows目标,请改用win_stat模块

    选项:

    常用的返回值判断:

  2.7.9 unarchive 模块

    功能:解包解压缩

    实现有两种用法:

  1. 将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes,此为默认值,可省略
  2. 将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no

    常见参数:

  2.7.10 archive模块

    功能:打包压缩保存再被管理节点

  2.7.11 hostname模块

  2.7.12 cron模块

  功能:计划任务

  支持时间:minute,hour,day,month,weekday

  关键字:

  2.7.13 yum和apt模块

    功能:yum 管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本apt 模块管理 Debian 相关版本的软件包

    关键字:

name所安装的包的名称
statepresent——安装,lastest——安装最新的,absent——卸载软件
update_cache强制更新yum缓存
conf_file指定远程yum安装时所以来的配置文件(安装本地已有的包)
disable_gpg_check是否禁止GPG checking,只用于presentor latest
disablerepo临时禁止使用yum库,只用于安装或更新时
enablerepo临时使用的yum库。只用于安装或更新时

 

   2.7.14 yum_repository模块

    功能:建立yum仓库模块

    关键字:

name参数必须参数,用于指定要操作的唯一的仓库ID,也就是”.repo”配置文件中每个仓库对应的”中括号”内的仓库ID。
baseurl参数baseurl参数:此参数用于设置 yum 仓库的 baseurl。
description参数此参数用于设置仓库的注释信息,也就是”.repo”配置文件中每个仓库对应的”name字段”对应的内容。
file参数此参数用于设置仓库的配置文件名称,即设置”.repo”配置文件的文件名前缀,在不使用此参数的情况下,默认以 name 参数的仓库ID作为”.repo”配置文件的文件名前缀,同一个”.repo” 配置文件中 可以存在多个 yum 源。
enabled参数此参数用于设置是否激活对应的 yum 源,此参数默认值为 yes,表示启用对应的 yum 源,设置为 no 表示不启用对应的 yum 源。
gpgcheck参数此参数用于设置是否开启 rpm 包验证功能,默认值为 no,表示不启用包验证,设置为 yes 表示开启包验证功能。
gpgcakey参数当 gpgcheck 参数设置为 yes 时,需要使用此参数指定验证包所需的公钥。
state参数默认值为 present,当值设置为 absent 时,表示删除对应的 yum 源。

  2.7.15 service模块

    功能:管理服务

    关键字:

name参数此参数用于指定需要操作的服务名称,比如:nginx
state参数  此参数用于指定服务的状态,比如,我们想要启动远程主机中的 nginx,则可以将 state 的值设置为 started;如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped。此参数的可用值有startedstoppedrestartedreloaded
enabled参数此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动

 

  2.7.16 mount挂载和卸载

    功能: 挂载和卸载文件系统

  2.7.17 User模块

    功能:管理用户

comment用户的描述信息
createhome是否创建家目录
force在使用state=absent时, 行为与userdel –force一致.
group指定基本组
groups指定附加组,如果指定为(groups=)表示删除所有组
home指定用户家目录
move_home如果设置为home=时, 试图将用户主目录移动到指定的目录
name指定用户名
non_unique该选项允许改变非唯一的用户ID值
password指定用户密码,使用 SHA512 hash
remove在使用state=absent时, 行为是与userdel –remove一致
shell指定默认shell
state设置帐号状态,不指定为创建,指定值为absent表示删除
system当创建一个用户,设置这个用户是系统用户。这个设置不能更改现有用户
uid指定用户的uid
update_ password
always如果password参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always
on_create如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定

   2.7.18 group模块

    功能:管理组

  2.7.19 reboot模块

  2.7.20 lineinfile模块

    ansible在使用sed进行替换时,经常会遇到需要转义的问题,而且ansible在遇到特殊符号进行替换时,存在问题,无法正常进行替换 。其实在ansible自身提供了两个模块:lineinfile模块和replace模块,可以方便的进行替换一般在ansible当中去修改某个文件的单行进行替换的时候需要使用lineinfile模块

    regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。

    如果想进行多行匹配进行替换需要使用replace模块

    功能:相当于sed,可以修改文件内容

    关键字:

path指定要操作的文件
regexp使用正则表达式匹配对应的行
line修改为新的内容
insertafter将文本插入到“指定的行”之后
insertbefore将文本插入到“指定的行”之前
state删除对应的文本时,需要state=absent
backrefs

1.支持向后引用

2.当未匹配到内容则不操作文件

backup是否在修改文件之前对文件进行备份
create当要操作的文件并不存在时,是否创建对应的文件

  2.7.21 replace

    该模块有点类似于sed命令,主要也是基于正则进行匹配和替换

  2.7.22 setup模块

    功能: setup 模块来收集主机的系统信息,这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度

    可以使用 gather_facts:

no禁止
Ansible收集
facts信息

 

 

举报

相关推荐

0 条评论