生活资讯
ansible
2025-01-01 18:44  浏览:113

E-mail: 1226032602@qq.com

https://docs.ansible.com/

自动化运维工具ansible
ansible基于python开发的自动化运维工具
其功能实现基于SSH远程连接服务
批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能

1、不需要单独安装客户端,基于sshd服务
2、不需要服务端
3、依靠大量的模块实现

  • user
  • inventory
  • modules (core modules, custom modules)
  • playbook
  • plugin
  • connection plugin
  • public/private
 
 
 
 
 
 

https://docs.ansible.com/ansible/latest/reference_appendices/config.html#ansible-configuration-settings

 
 
  • ANSIBLE_ConFIG (如果设置了环境变量)
  • ansible.cfg (工作目录中)
  • ~/.ansible.cfg (家目录中)
  • /etc/ansible/ansible.cfg

/opt/ansible-project1

ansible.cfg

 
 
 
 
 

vim /etc/ansible/hosts

 
 
 
 

ansible及客户端都添加sudo授权用户
/etc/ansible/ansible.cfg

 
 
 
 
 
 
 
 

/etc/ansible/ansible.cfg

 
 
  • 绿色: 表示查看信息,对远程主机未做改动的命令
  • 红色: 批量管理产生错误信息
  • 黄色: 对远程主机做了相应改动
  • 粉色: 对操作提出建议或忠告

https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
/etc/ansible/hosts

 
 
 
 

In INI:

 

In YAML:

 
 

In INI:

 

In YAML:

 
 
 
 
 
 
 
 
 
 
 

vim ansible.cfg

 

cat inventory/part1

 

cat inventory/part2

 
 

group_vars/和host_vars/目录可以存在于playbooks目录或inventory目录中。如果两个路径都存在,则playbook目录中的变量将覆盖inventory目录中设置的变量。
相关的Host和Group变量可以放在/etc/ansible/host_vars/和/etc/ansible/group_vars/下的主机同名目录中的文件,也支持’.yml’、‘.yaml’和’.json’为后缀的YMAL和JSON文件

group_vars目录下的文件定义Roles中调用的变量
文件名为all的文件定义的变量针对所有Roles生效

tree inventory

 

cat inventory/part1

 

cat inventory/part2

 

cat inventory/group_vars/nginx

 

cat inventory/group_vars/all

 

cat inventory/hosts_vars/127.0.0.1

 

cat playbooks/nginx.yml

 
 
 

 
 

oldboy为主机组的名字
-m 后边是模块名
-m MODULE_NAME, --module-name=MODULE_NAME
module name to execute (default=command)
默认的模块是command

-a 后面是要执行的命令,也可以写一个ip,针对一台机器来执行命令
-a MODULE_ARGS, --args=MODULE_ARGS
module arguments

 

cat iplist

 
 
 

http://docs.ansible.com/ansible/latest/shell_module.html

 
 

https://docs.ansible.com/ansible/latest/modules/ping_module.html#ping-module

 
 

https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module
copy模块将文件从本地复制到远程计算机上的某个位置

 

ansible copy模块 会自动创建多级目录

 

目标目录都存在的情况下,可以传输过去同时修改文件名

 

backup=yes 备份

 
remote_src
 
 

https://docs.ansible.com/ansible/latest/modules/template_module.html#template-module

 
 

从远程节点获取文件

 
 
 

https://docs.ansible.com/ansible/latest/modules/script_module.html

 
 

https://docs.ansible.com/ansible/latest/modules/cron_module.html#cron-module

 
 

disabled=yes 注释定时任务

https://docs.ansible.com/ansible/latest/modules/mount_module.html#mount-module

 
 
 

https://docs.ansible.com/ansible/latest/modules/file_module.html

 
 

https://docs.ansible.com/ansible/latest/modules/setup_module.html#setup-module

 
 
 
 
 
 
 

https://docs.ansible.com/ansible/latest/modules/yum_module.html

 
 
 
 
 
 
 
 
 

https://docs.ansible.com/ansible/latest/modules/service_module.html

 
 
 

https://docs.ansible.com/ansible/latest/modules/systemd_module.html#systemd-module

 
 
 
 

https://docs.ansible.com/ansible/latest/modules/user_module.html#user-module

 
 

生成密码

 

创建带密码的用户

 
 
 
 

https://docs.ansible.com/ansible/latest/modules/archive_module.html#archive-module

 
 
 

https://docs.ansible.com/ansible/latest/modules/unarchive_module.html#unarchive-module
默认解压方式 /usr/bin/gtar /usr/bin/unzip

 
 
 
 
 
 
 
 
 

1.修改配置文件

 

2.分发公钥

 
 
 

cat authkey.yml

 
 

添加或删除数据库
ansible及远程主机安装

 
 

state

present
absent
dump
import

 
 
 
 
 
 

mode

getslave
getmaster
changemaster
stopslave
startslave
resetslave
resetslaveall

确保”某一行文本”存在于指定的文件中,或者确保从文件中删除指定的”文本”

 
 

插入/更新/删除由标记线包围的文本块

 
 

使用反向引用的正则表达式替换文件中特定字符串的所有实例

 
 
 
 

https://docs.ansible.com/ansible/latest/user_guide/playbooks.html
关键字
https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html

 
 

key value

 

列表

 

字典

 
 

cat /etc/ansible/test.yml

 
 
 
 
 
 
 
 
 
 
 
 
 
 

web.yaml

 
 
 
 
 

block

块允许对任务进行逻辑分组以及进行中的错误处理。您可以应用于单个任务的大多数内容(循环除外)都可以应用于块级,这也使设置任务通用的数据或指令变得更加容易

 
 
 
 
  • 任务block将正常执行
  • 如果有任何错误,则该rescue部分将执行您需要执行的操作以从上一个错误中恢复过来。
  • always无论block和rescue部分中以前发生过或没有发生任何错误,此部分都将运行。

应当注意的是,如果某个rescue部分成功完成,则它会继续播放,因为它“擦除”了错误状态(但不是报告,这意味着它既不会触发max_fail_percentage也不会any_errors_fatal配置,而是会出现在剧本统计信息中

Ansible还为rescue块部分中的任务提供了几个变量

  • ansible_failed_task
    返回“失败”并触发救援的任务。例如,要使用名称ansible_failed_task.name

  • ansible_failed_result
    触发救援的失败任务的捕获返回结果。这将等于在register关键字中使用了此var

 
 

定义Ansible一次应管理多少个主机

 
 
 
 
 

达到某个故障阈值时中止执行

 

10台服务器中有3台以上发生故障,则其余的播放将被中止

仅为一批主机运行一次任务

 
 
 
 
 
 
 

包括一个文件,其中包含要在当前剧本中执行的剧本或任务的列表

 
 

加载并执行角色

  • 动态加载并执行指定角色作为任务。
  • 仅可以使用其中Ansible任务被允许-内部pre_tasks,tasks或post_tasks剧本的对象,或作为一个角色里的任务
 
 

包括一个文件,其中包含要在当前剧本中执行的任务列表

 
 

import a playbook

 
 

import a role into a play

 
 

import a task list

 
 

https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html

 
 
 
 
 
 
 
 

命令行 > 剧本 > 主机清单

 
 
 
 

cat var.yml

 
 
  • role defaults
  • dynamic inventory variables
  • inventory variables
  • inventory group_vars
  • inventory host_vars
  • playbook group_vars
  • playbook host_vars
  • host facts
  • registered variables
  • set_facts
  • play variables
  • play vars_prompt
  • play vars_files
  • role variables and include variables
  • block variables
  • task variables
  • extra variables

  • group_vars/all
 
  • group_vars/boston
 
 
  • host_vars/xyz.boston.example.com
 
 
  • roles/x/vars/main.yml
 
 
 

/vars/external_vars.yml

 
 
 
 
 
 
 
 
 

https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html
指定位置添加标签,可以指定标签执行剧本

 
 
 
 
 
 
 

 
 
 

nfs.yml

 

cat rsync.yml

 

https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html

 
 
 
 
 
 
 
 
 

cat judge.yml

 

cat judge.yml

 
 
 
 
 
 
 
 
 

查看一个列表是否包含另一个列表或包含另一个列表,可以使用“子集”和“超集”

 
 
 
 
 
 
 
 

https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html

 
 
 
 
 
 

遍历inventory

 
 
 
 
 
 
 
 
 

cat with_items.yml

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

roles/x/tasks/main.yml

 
 
 
  • group_vars目录下的文件定义Roles中调用的变量
  • 文件名为all的文件定义的变量针对所有Roles生效
 

角色期望文件位于某些目录名称中。角色必须至少包含其中一个目录,但是排除任何未使用的目录是完全正确的。在使用时每个目录必须包含一个main.yml文件,其中包含相关内容
tasks - 包含角色要执行的主要任务列表
handlers - 包含处理程序,可以由此角色使用,甚至可以在此角色之外的任何位置使用
defaults - 角色的默认变量
vars - 角色的其他变量
files - 包含可以通过此角色部署的文件
templates - 包含可以通过此角色部署的模板
meta - 为此角色定义一些元数据
其他YAML文件可能包含在某些目录中。例如,通常的做法是从tasks/main.yml文件中包含特定于平台的任务

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

创建目录

 
 
 
 

[root@m01 roles]# cat nfs/vars/main.yml

 

vars/main.yml中的变量是role变量,优先级比较高,放置一些不想被覆盖的变量,所以变量在命名的时候一般都加入role的名字作为前缀,防止不小心被Playbook中定义的变量覆盖

defaults/main.yml中的变量是默认变量。优先级在所有的变量中是最低的,用于放置一些需要被覆盖的变量

[root@m01 roles]# cat nfs/tasks/main.yml

 
 

[root@m01 roles]# cat nfs/handlers/main.yml

 
 
 

cat roles/nginx/templates/default.conf.j2

 

cat roles/nginx/templates/nginx.conf.j2

 
 

roles/myapp/meta/main.yml

 
 

roles/nginx/meta/main.yml

 

roles/common/tasks/main.yml

 
 

cat site.yml

 
 

https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html
[root@m01 roles]# cat rsync/templates/rsyncd.conf.j2

 

[root@m01 roles]# cat rsync/vars/main.yml

 

[root@m01 roles]# cat rsync/tasks/main.yml

 

[root@m01 roles]# cat site.yml

 
 

https://jinja.palletsprojects.com/en/2.10.x/

http://jinja.pocoo.org/

 
 
 
 
 
 

编辑file.yml,定义nginxconf role的一个功能集(一个文件一个功能集)。

 

编辑main.yml,定义任务功能集合、nginxconf role功能集入口

 
 
 
 
 

该变量文件需要关注的是nginx_proxies定义的变量组,其下的变量列表通过for循环读取后可以通过“. ”来引用,即如下proxy.name这样的引用方式

 
 
 
 
  • pre_tasks戏剧中定义的任何内容
    到目前为止,所有已触发的处理程序都将运行

  • 列出的每个角色roles将依次执行。角色中定义的任何角色依赖关系meta/main.yml都将首先运行,但要遵循标签过滤和条件

  • tasks戏剧中定义的任何内容
    到目前为止,所有已触发的处理程序都将运行

  • post_tasks戏剧中定义的任何内容
    到目前为止,所有已触发的处理程序都将运行

 
 
 
 
 
 
 
 
 
 
 

共享Ansible内容的中心

https://galaxy.ansible.com/docs/
https://galaxy.ansible.com/

ansible-galaxy --help

 

ansible-galaxy collection --help

 

ansible-galaxy role --help

 
 
 
 

初始化新role

ansible-galaxy init --help

 
 
 

下载role
Galaxy上的Roles命名规范遵循user-name.rolename

https://galaxy.ansible.com/

 
 

下载多个roles
roles.txt

 
 

install_roles.yml

    以上就是本篇文章【ansible】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/tnews/4233.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
耐水弹力海棉
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
耐水高强度海棉
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
防潮耐水EVA材料
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
耐油耐水海绵
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
供应耐水海绵
产品属性用途区域产品包装、耐水 防潮密度0.02-0.18g/cm3原产地中国,江苏,常州品牌D-Foam形状可根据客户提供图纸生产颜色可根
看了OPPO、vivo的新旗舰手机样张后,决定还是继续用微单吧
最近,OPPO、vivo都给出了自家旗舰手机的样张,大战一触即发。记得手机圈上一次这么火爆,还是小米15 Ultra的时候。具体来说,当
微信借钱不求人,6个步骤轻松搞定...手机微信怎么借钱「微信借钱不求人,6个步骤轻松搞定...」
微信,作为中国人日常生活中不可或缺的社交软件,不仅满足了人们的沟通需求,还悄然融入了金融服务,其中就包括微信借钱功能。无
小米8系列手机,有它才叫防摔保护手机爆屏「小米8系列手机,有它才叫防摔保护」
手机已成为日常生活必备品,而且小米8陶瓷后盖摔不得,维修的费用都赶上半个手机的钱了,选什么手机壳呢,贼难拆的磨砂硬壳?一
米其林指南开启江苏篇章,“江苏味”如何与世界“双向奔赴”
米其林指南作为餐饮界的“奥斯卡”,关注度高。2024年7月,米其林指南重调评价体系,转为省份榜单评选,并官宣江苏省、福建省成
重磅发布!5.4%!
4月16日,国家统计局发布的数据显示,一季度,在以习近平同志为核心的党中央坚强领导下,各地区各部门认真贯彻落实党中央、国务