推广 热搜: 百度  搜索引擎  企业  可以  选择  使用  page  机械设备  参数  上海 

ansible

   日期:2025-01-01     作者:e0r9m    caijiyuan  
核心提示:E-mail: 1226032602@qq.com https://docs.ansible.com/自动化运维工具ansible ansible基于python开发的自动化运维工具 其功

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

本文地址:http://ww.kub2b.com/tnews/4233.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类生活信息

文章列表
相关文章
最新动态
推荐图文
生活信息
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号