searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ansible工具介绍

2023-05-18 03:30:51
19
0

ansible关键字解释

Ansible: 自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

HostInventory:Ansible 主机管理模块,包含针对主机的各类配置,可针对host及host group进行配置。

Playbooks:ansible 任务执行模式,ad-hoc模式(点对点模式),类似于shell的命令行,另外一种就是playbook,playbook通过组织一系列的task完成自动化部署、自动化运维的工作。

Jinja2 :基于ptyhon的一种模板,通常用于动态生成html、config文件等。

Tag:ansible 任务的标识,可通过playbook执行不同的标识的tag。

 

Ansible的安装方法:

yum install -y ansible


Ansible 基础环境配置:
ANSIBLE_CONFIG: 环境变量指定的配置文件(export ANSIBLE_CONFIG=xxx/ansible/ansible.cfg,将ANSIBLE_CONFIG环境变量指向当前需要部署的ansible.cfg)
ansible.cfg: 当前目录下的ansible.cfg
~/.ansible.cfg: 家目录下的ansible.cfg
/etc/ansible/ansible.cfg:默认的全局配置文件"

该文件是ansible基础不配置文件,一般不要我们在做相关修改

   比如指定ansible的host文件、ssh的端口、加载的自定库、扩展库啥的

 

Host文件:

ansible --list   igw 指定主机的名字查看主机

ansible-playbook --list-hosts ./playbooks/dpos.yml   查看playbook目标主机列表

ansible-inventory  --graph  all   查看主机变量组

主机变量:

      在host 文件中直接定义

在host_vars文件夹中直接定义:

ansible igw -m debug -a 'var=ansible_ssh_user'

主机组变量:

      在host 文件中直接定义

在host_vars文件夹中直接定义:

ansible igw -m debug -a 'var=igw_test'

ansible igw -m debug -a 'var=igw_test1'

 

Ansible的执行模式:

  • ad-hoc模式(点对点模式):

ansible-doc -l 用于查询asnible支持的模块命令,有ansible官方自己维护的也有其他公司提供的命令

ansible-doc 模块名  ansible-doc shell 查看shell的模块的说明

Ansible 命令演示:

ansible 192.168.23.135 -m copy -a  'src=/etc/passwd dest=/tmp'

ansible 192.168.23.135 -m shell -a  'ls -l /home/ctyos'

ansible igw -m shell -a  'ls -l /home/ctyos'

ansible igw -m shell -a  'ls -l /home/ctyos'  --limit 192.168.23.133

ansible 192.168.23.135 -m yum -a "name=acme state=present"

ansible -i host.file.ini -m yum -a "name=acme state=present"

Copy路径:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html

 

  • Ansible的执行模式:playbook:

这是一个playbook文件,该文件中有两个play、每个play中有两个task任务

Playbook的基本写法:

playbook中,每个play都需要放在数组中,所以在playbook的顶层使用列表的方式- xxx:来表示这是一个play(此处是- hosts:)。

每个play都必须包含hosts和tasks指令。

hosts指令用来指定要执行该play的目标主机,可以是主机名,也可以是主机组,还支持其它方式来更灵活的指定目标主机。具体的规则后文再做介绍。

tasks指令用来指定这个play中包含的任务,可以是一个或多个任务,任务也需要放在play的数组中,所以tasks指令内使用- xxx:的方式来表示每一个任务(此处是- copy:)。

gather_facts是一个play级别的指令设置,它是一个负责收集目标主机信息的任务,由setup模块提供。默认情况下,每个play都会先执行这个特殊的任务,收集完信息之后才开始执行其它任务。但是,收集目标主机信息的效率很低,如果能够确保playbook中不会使用到所收集的信息,可以显式指定gather_facts: no来禁止这个默认执行的收集任务,这对效率的提升是非常可观的。

此外每个play和每个task都可以使用name指令来命名,也建议尽量为每个play和每个task都命名,且名称具有唯一性

 

Role角色:

Role可以组织任务、变量、handler以及其它一些内容,所以一个完整的Role里包含的目录和文件可能较多,手动去创建所有这些目录和文件是一件比较烦人的事,好在可以使用ansible-galaxy init ROLE_NAME命令来快速创建一个符合Role文件组织规范的框架

 

Jinja2模板:

Jinja2模板引擎提供了三种特殊符号来包围模板表达式:

(1).{{xxx}}:双大括号包围变量或表达式(Ansible中的变量就是它包围的)

(2).{#xxx#}:Jinja2的注释符号

(3).{%xxx%}`:Jinja2的一些特殊关键字标签,比如if语句、for循环语句等等

 

 

相关参考资料:

      https://www.cnblogs.com/keerya/p/7987886.html#_label0

  • 一步到位玩透ansible

https://www.junmajinlong.com/ansible/index/

  • Ansible 官方文档

https://docs.ansible.com/ansible/latest/

  • Ansible 官方文档-模板过滤器

https://docs.ansible.com/ansible/latest/plugins/filter.html#using-filter-plugins

0条评论
0 / 1000
k****m
3文章数
0粉丝数
k****m
3 文章 | 0 粉丝
k****m
3文章数
0粉丝数
k****m
3 文章 | 0 粉丝
原创

ansible工具介绍

2023-05-18 03:30:51
19
0

ansible关键字解释

Ansible: 自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

HostInventory:Ansible 主机管理模块,包含针对主机的各类配置,可针对host及host group进行配置。

Playbooks:ansible 任务执行模式,ad-hoc模式(点对点模式),类似于shell的命令行,另外一种就是playbook,playbook通过组织一系列的task完成自动化部署、自动化运维的工作。

Jinja2 :基于ptyhon的一种模板,通常用于动态生成html、config文件等。

Tag:ansible 任务的标识,可通过playbook执行不同的标识的tag。

 

Ansible的安装方法:

yum install -y ansible


Ansible 基础环境配置:
ANSIBLE_CONFIG: 环境变量指定的配置文件(export ANSIBLE_CONFIG=xxx/ansible/ansible.cfg,将ANSIBLE_CONFIG环境变量指向当前需要部署的ansible.cfg)
ansible.cfg: 当前目录下的ansible.cfg
~/.ansible.cfg: 家目录下的ansible.cfg
/etc/ansible/ansible.cfg:默认的全局配置文件"

该文件是ansible基础不配置文件,一般不要我们在做相关修改

   比如指定ansible的host文件、ssh的端口、加载的自定库、扩展库啥的

 

Host文件:

ansible --list   igw 指定主机的名字查看主机

ansible-playbook --list-hosts ./playbooks/dpos.yml   查看playbook目标主机列表

ansible-inventory  --graph  all   查看主机变量组

主机变量:

      在host 文件中直接定义

在host_vars文件夹中直接定义:

ansible igw -m debug -a 'var=ansible_ssh_user'

主机组变量:

      在host 文件中直接定义

在host_vars文件夹中直接定义:

ansible igw -m debug -a 'var=igw_test'

ansible igw -m debug -a 'var=igw_test1'

 

Ansible的执行模式:

  • ad-hoc模式(点对点模式):

ansible-doc -l 用于查询asnible支持的模块命令,有ansible官方自己维护的也有其他公司提供的命令

ansible-doc 模块名  ansible-doc shell 查看shell的模块的说明

Ansible 命令演示:

ansible 192.168.23.135 -m copy -a  'src=/etc/passwd dest=/tmp'

ansible 192.168.23.135 -m shell -a  'ls -l /home/ctyos'

ansible igw -m shell -a  'ls -l /home/ctyos'

ansible igw -m shell -a  'ls -l /home/ctyos'  --limit 192.168.23.133

ansible 192.168.23.135 -m yum -a "name=acme state=present"

ansible -i host.file.ini -m yum -a "name=acme state=present"

Copy路径:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html

 

  • Ansible的执行模式:playbook:

这是一个playbook文件,该文件中有两个play、每个play中有两个task任务

Playbook的基本写法:

playbook中,每个play都需要放在数组中,所以在playbook的顶层使用列表的方式- xxx:来表示这是一个play(此处是- hosts:)。

每个play都必须包含hosts和tasks指令。

hosts指令用来指定要执行该play的目标主机,可以是主机名,也可以是主机组,还支持其它方式来更灵活的指定目标主机。具体的规则后文再做介绍。

tasks指令用来指定这个play中包含的任务,可以是一个或多个任务,任务也需要放在play的数组中,所以tasks指令内使用- xxx:的方式来表示每一个任务(此处是- copy:)。

gather_facts是一个play级别的指令设置,它是一个负责收集目标主机信息的任务,由setup模块提供。默认情况下,每个play都会先执行这个特殊的任务,收集完信息之后才开始执行其它任务。但是,收集目标主机信息的效率很低,如果能够确保playbook中不会使用到所收集的信息,可以显式指定gather_facts: no来禁止这个默认执行的收集任务,这对效率的提升是非常可观的。

此外每个play和每个task都可以使用name指令来命名,也建议尽量为每个play和每个task都命名,且名称具有唯一性

 

Role角色:

Role可以组织任务、变量、handler以及其它一些内容,所以一个完整的Role里包含的目录和文件可能较多,手动去创建所有这些目录和文件是一件比较烦人的事,好在可以使用ansible-galaxy init ROLE_NAME命令来快速创建一个符合Role文件组织规范的框架

 

Jinja2模板:

Jinja2模板引擎提供了三种特殊符号来包围模板表达式:

(1).{{xxx}}:双大括号包围变量或表达式(Ansible中的变量就是它包围的)

(2).{#xxx#}:Jinja2的注释符号

(3).{%xxx%}`:Jinja2的一些特殊关键字标签,比如if语句、for循环语句等等

 

 

相关参考资料:

      https://www.cnblogs.com/keerya/p/7987886.html#_label0

  • 一步到位玩透ansible

https://www.junmajinlong.com/ansible/index/

  • Ansible 官方文档

https://docs.ansible.com/ansible/latest/

  • Ansible 官方文档-模板过滤器

https://docs.ansible.com/ansible/latest/plugins/filter.html#using-filter-plugins

文章来自个人专栏
运维工具
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0