ansible 基础

自动化运维工具

1. 模块化:调用特定的模块,完成特定任务 Paramiko(python对ssh的实现),PyYAML,Jinja2(模板语言)三个关键模块

2. 支持自定义模块,可使用任何编程语言写模块基于Python语言实现 

3. 部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖PKI(无需ssl)

4. 安全,基于OpenSSH

5. 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

6. 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构较强大的多层解决方案role
  • 安装 : yum install ansible

ansible 相关文件

  • /etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性


[defaults]
inventory = /etc/ansible/hosts # 主机列表配置文件
library = /usr/share/my_modules/ # 库文件存放目录
remote_tmp = $HOME/.ansible/tmp #临时py命令文件存放在远程主机目录
local_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录
forks = 5 # 默认并发数
sudo_user = root # 默认sudo 用户
ask_sudo_pass = True #每次执行ansible命令是否询问ssh密码
ask_pass = True
remote_port = 22
host_key_checking = False # 检查对应服务器的host_key,建议取消注释
log_path=/var/log/ansible.log #日志文件,建议启用
module_name = command #默认模块,可以修改为shell模块
  • /etc/ansible/hosts 主机清单
ansible 的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名 默认的inventory file为/etc/ansible/hosts inventory file可以有多个,且也可以通过DynamicInventory来动态生成

inventory文件遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中此外,当如若目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号来标明如果主机名称遵循相似的命名模式,还可以使用列表的方式标识各主机

...

[web]
192.168.47.10[1:10] [mysql]
192.168.47.20[1..2]
...

/etc/ansible/roles/ 存放角色的目录

Roles各目录作用
/roles/project/ : # 项目名称,有以下子目录 files/ :#存放由copy或script模块等调用的文件 templates/:#template模块查找所需要模板文件的目录 tasks/:#定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含 handlers/:#至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含 vars/:#定义变量,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含 meta/:#定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为main.yml的文件,其它文件需在此文件中通过include进行包含 default/:#设定默认变量时使用此目录中的main.yml文件

ansible相关工具

/usr/bin/ansible #主程序,临时命令执行工具
/usr/bin/ansible-doc #查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy #下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook #定制自动化任务,编排剧本工具
/usr/bin/ansible-pull #远程执行命令的工具
/usr/bin/ansible-vault #文件加密工具
/usr/bin/ansible-console #基于Console界面与用户交互的执行工具
  • ansible-doc
ansible-doc [options] [module...]
-l, --list #列出可用模块
-s, --snippet #显示指定模块的playbook片段

语法

  • ansible host-pattern [-m module_name] [-a args]
  • ansible 主机清单列表 【-m 模块 】 【 -a 参数 】
  • 详细选项
--version #显示版本
-m module #指定模块,默认为command
-v #详细过程 –vv -vvv更详细
--list-hosts #显示主机列表,可简写 --list
-k, --ask-pass #提示输入ssh连接密码,默认Key验证
-C, --check #检查,并不执行
-T, --timeout=TIMEOUT #执行命令的超时时间,默认10s
-u, --user=REMOTE_USER #执行远程执行的用户
-b, --become #代替旧版的sudo 切换
--become-user=USERNAME #指定sudo的runas用户,默认为root
-K, --ask-become-pass #提示输入sudo时的口令
  • 主机清单匹配法
#  所有主机
ansible all –m ping # 通配符
ansible “*” -m ping
ansible 192.168.1.* -m ping
ansible “srvs” -m ping # 或 ansible “websrvs:appsrvs” -m ping
ansible “192.168.1.10:192.168.1.20” -m ping #与
#在websrvs组并且在dbsrvs组中的主机
ansible “websrvs:&dbsrvs” –m ping # 非
# 在websrvs组,但不在dbsrvs组中的主机 注意:此处为单引号
ansible ‘websrvs:!dbsrvs’ –m ping
  • 加载执行过程

1. 加载自己的配置文件 默认/etc/ansible/ansible.cfg 2. 加载自己对应的模块文件,如:command 3. 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户'$HOME'/.ansible/tmp/ansible-tmp-数字/XXX.PY文件 4. 给文件+x执行 5. 执行并返回结果 6. 删除临时py文件,退出 ### 执行状态 绿色:执行成功并且不需要做改变的操作
黄色:执行成功并且对目标主机做变更
红色:执行失败
  • 模块
https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
**模块索引**
所有模块
云模块
集群模块
命令模块
加密模块
数据库模块
文件模块
身份模块
库存模块
讯息模块
监控模块
网络工具模块
网络模块
通知模块
包装模块
远程管理模块
源代码控制模块
存储模块
系统模块
实用程序模块
Web基础架构模块
Windows模块

ANSIBLE自动化管理工具的更多相关文章

  1. 1.Ansible自动化管理工具

    1.Ansible基本概述 Ansible是一个IT自动化的配置管理工具,自动化主要体现在Ansible集成了丰富模块,丰富的功能组件, 可以通过一个命令行完成一系列的操作.进而能减少我们重复性的工作 ...

  2. Ansible批量自动化管理工具(二)

    Ansible批量自动化管理工具(二) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...

  3. Ansible批量自动化管理工具

    一,工具与环境介绍 1.1 ansible简介 批量管理服务器的工具 无需部署agent,通过ssh进行管理 流行的自动化运维工具:https://github.com/ansible/ansible ...

  4. Ansible批量自动化管理工具 roles标准化

    批量管理服务器的工具,无需部署代理,通过ssh进行管理,是python写的 ansible 常用模块 : (1)shell命令模块执行命令 (2)copy模块批量下发文件或文件夹 (3)script模 ...

  5. Linux系统——Ansible批量管理工具

    批量管理工具: (1)ansible 操作简单(适用于500台以下服务器) (2)saltstack 比较复杂(一般适用于1000-4w台服务器) (3)puppet超级复杂 systemctl(统一 ...

  6. ansible 自动化管理

    1 什么样的情形需要批量部署 1.操作系统的安装 常见的有collber,red hat satelite(redhat)系统专用. 2.操作系统的配置 常见的有cfengine,puppet,che ...

  7. ansible批量管理工具的搭建与简单的操作

    ansible的安装 # [root@localhost ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@localhost ...

  8. Chocolatey 简介(软件自动化管理工具)

    一.Chocolatey 管理Windows软件的明智方法 1.建立在技术的无人值守安装和PowerShell.建立在技术的无人值守安装和PowerShell. 2.轻松管理Windows软件的所有方 ...

  9. Python之开发自动化管理工具paramiko

    一.paramiko模块使用 1)远程执行主机命令获取结果 方法一 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_ ...

随机推荐

  1. 在Python中使用lambda高效操作列表的教程

    在Python中使用lambda高效操作列表的教程 这篇文章主要介绍了在Python中使用lambda高效操作列表的教程,结合了包括map.filter.reduce.sorted等函数,需要的朋友可 ...

  2. Go项目实战:打造高并发日志采集系统(五)

    前情回顾 前文我们完成了如下功能1 根据配置文件启动多个协程监控日志,并启动协程监听配置文件.2 根据配置文件热更新,动态协调日志监控.3 编写测试代码,向文件中不断写入日志并备份日志,验证系统健壮性 ...

  3. 为lumen添加session支持

    为lumen添加session支持,同时配置全局函数csrf_token可用 首先laravel和lumen框架的版本要一致,我这里版本都是5.4 1.复制laravel框架config目录下的ses ...

  4. webbench接口并发测试

    webbench接口并发测试 安装     安装工程中可能会出现确实Ctags的情况,可以进行命令安装: Ubuntu:apt install ctags Centos:yum install cta ...

  5. 安装glance

    在控制节点上执行 controllerHost='controller' MYSQL_PASSWD='m4r!adbOP' GLANCE_PASSWD='glance1234!' 1.创建数据库 my ...

  6. 【miscellaneous】单播、广播和多播IP地址

    转自:http://www.cnblogs.com/gaoxing/archive/2012/02/19/2358484.html 除地址类别外,还可根据传输的消息特征将IP地址分为单播.广播或多播. ...

  7. 上传下载文件到Linux服务器

    转自链接:https://blog.csdn.net/drdongshiye/article/details/89430535Mac的终端是十分强大 , 可以通过命令进行上传下载下载文件夹 scp - ...

  8. 学习笔记:html学习之一:html基本标记

    1. 概论 一个完整的 HTML 文档必须包含 3 个部分: 一个由 元素定义的文档版本信息. 一个由 定义各项声明的文档头部, 作为各种声明信息的包含元素出现在文档的顶端,并且要先于 出现. 一个由 ...

  9. [转帖]AMD第三代锐龙处理器首发评测:i9已无力招架

    AMD第三代锐龙处理器首发评测:i9已无力招架 Intel 从之前的 CCX 到了 CCD 增加了缓存 改善了 ccx 之间的延迟. https://baijiahao.baidu.com/s?id= ...

  10. [转帖]SSH原理与运用(二):远程操作与端口转发

    SSH原理与运用(二):远程操作与端口转发 http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html 接着前一次的文章,继续介绍S ...