概述

Ansible是一种自动化运维管理工具,无需安装客户端,通过SSH协议与节点通信。

架构

  由上图可以看出Ansible由5个部分组成

  1. Ansible:核心
  2. Inventory:定义管理主机的清单
  3. Modules:包括Ansible自带的核心模块及自定义模块
  4. Playbooks:Ansible的配置,部署和编排语言(YAML格式)
  5. Plugins:完成模块功能的补充,包括连接插件、邮件插件

安装

yum install ansible or pip install ansible

在管理节点上python要大于等于2.4,如果远端节点python版本小于2.5,需要安装python-simplejson

如果远端节点开启了SELinux,copy/file/template等相关模块必须在远端节点安装了libselinux-python后才能使用

配置

配置文件:/etc/ansible/ansible.cfg

[defaults]

inventory            = /etc/ansible/hosts    # 清单文件
forks = # 设置多少进程数与远端节点通信
sudo_user = root # sudo用户
remote_port = # SSH端口号
role_path = /etc/ansible/roles # roles的目录,多个目录以冒号分隔
host_key_checking = True # 第一次执行时是否忽略主机SSH KEY验证
remote_user = root # 远端执行用户

清单

默认清单为/etc/ansible/hosts,-i <path>选项可以指定其它清单,[]里面定义Groups,下面是Hosts

[webservers]
foo.example.com
bar.example.com [dbservers]
one.example.com
two.example.com

主机名alias,主机静态IP,主机ssh密码(不安全,建议使用SSH keys)

[test]
node1 ansible_host=192.168.0.100 ansible_ssh_pass="password"
node2 ansible_host=192.168.0.101 ansible_ssh_pass="password" 

OR

[test]
192.168.0.100
192.168.0.101
[test:vars]
ansible_port=
ansible_user=xxx
ansible_ssh_pass=xxx
ansible_become_method=sudo
ansible_become=true
ansible_become_pass=xxx

使用

1、Ad-Hoc Commands

ad-hoc command是一种快速执行的模式,且不会保存

2、Playbooks

Playbooks是完全不同于adhoc的执行模式,格式是YAML,每个playbook由一个或更多的'plays'组成

just one play:

---
- hosts: webservers
remote_user: root
tasks:- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
handlers:
- name: restart apache
service: name=httpd state=restarted

Basics

Hosts and Users

---
- hosts: webservers
remote_user: root

Tasks List

tasks:
- name: make sure apache is running
service: name=httpd state=started

Handlers: Running Operations On Change

notify:
- restart apache
handlers:
- name: restart apache
service: name=httpd state=restarted

执行Playbook

ansible-playbook playbook.yml

Usage

ansible

Usage: ansible <host-pattern> [options]

Options:
-a MODULE_ARGS # 模块参数
-m MODULE_NAME # 模块名

ansible-playbook

Usage: ansible-playbook playbook.yml

Options:
-C, --check # 不执行,只检查远端节点的状态值
-D, --diff    # 使用文件,模板这些模块的时候,列出两个文件的不同之处,最好与--check结合使用
--syntax-check # 检查playbook的语法是否正确

ansible-doc  # 查看模块的具体用法

Usage: ansible-doc [options] [module...]

Options:
-l, --list # 列出所有的模块
-v, --verbose # 输出更详细的模式

最新文章

  1. Mysql调整字段顺序
  2. 新人入职100天,聊聊自己的经验&amp;教训
  3. iOS Run_time
  4. 深入分析Java ClassLoader原理
  5. 《构建之法》8&amp;16
  6. OutputCache属性详解(三)— VaryByHeader,VaryByCustom
  7. python的paramiko源码修改了一下,写了个操作命令的日志审计 bug修改
  8. java 切换
  9. Mybatis-Generator 自动生成Dao、Model、Mapping相关文档
  10. linux - 开机启动thunderbird、chromium
  11. winform实现listview中combox
  12. 【问题解决方案】pygame生成的窗口点右上角关闭按钮未响应问题的解决
  13. Idea debug时报错:Command line is too long
  14. Error:Execution failed for task :app:transformClassesWithInstantRunForDebug解决方案
  15. Vuejs——(8)Vuejs组件的定义
  16. lightgbm的sklearn接口和原生接口参数详细说明及调参指点
  17. 如何删除sharepoint列表List中的全部数据。
  18. Linux、apache 无法使用PHP创建目录和文件
  19. Flask初级(五)flash在模板中使用继承,模板的模板
  20. maven向本地库添加jar包

热门文章

  1. Http概述(一)
  2. 前端手札--meta标记篇
  3. Linux下SVN安装与基本操作
  4. JAVA反射其实就是那么一回事
  5. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
  6. 吉特仓库管理系统-.NET4.0环境安装不上问题解决
  7. EditPlus v4.5 简体中文
  8. -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
  9. 【Spring3.0系列】---Bean不同配置方式比较 和适用场合
  10. MVC的理解