博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ansible 详细用法部署安装
阅读量:7124 次
发布时间:2019-06-28

本文共 5215 字,大约阅读时间需要 17 分钟。

#一、概述

运维工具按需不需要有代理程序来划分的话分两类:

agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix

agentless(无须代理工具):基于ssh服务完成管理,ansible, fabric

#二、简介

  Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。

  Ansible与Saltstack最大的区别是Ansible无需在被控主机部署任何客户端代理,默认直接通过SSH通道进行远程命令执行或下发配置:相同点是都具备功能强大、灵活的系统管理、状态配置,两者都提供丰富的模板及API,对云计算平台、大数据都有很好的支持。

1.特点

  • 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
    默认使用SSH协议对设备进行管理;
  • 主从集中化管理;
  • 配置简单、功能强大、扩展性强;
  • 支持API及自定义模块,可通过Python轻松扩展;
  • 通过Playbooks来定制强大的配置、状态管理;
  • 对云计算平台、大数据都有很好的支持;
  • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。
  • 幂等性:一种操作重复多次结果相同

简评:

(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3)、使用python编写,维护更简单,ruby语法过于复杂;
(4)、支持sudo。
2、Ansible架构图
QQ_20170524110419

Ansible核心组件说明:

  • Ansible:Ansible的核心程序
  • Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载
  • Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.
  • Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。
  • Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。
  • Connection Plugins:连接插件,Ansible和Host通信使用

3、ansible执行过程,其中暖色调的代表已经模块化。

screenshot

三、基础环境的安装与配置

1、ssh免密登录 配置 一直回车

2、shell脚本复制到101-150服务器

`for i in seq 101 150

do
/usr/bin/expect << EOF
spawn ssh-copy-id bfadmin@192.168.100.$i
expect {
"yes/no" { send "yesr"; exp_continue; }
"*password" { send "P@ssw0rdr" }
}

expect "~$ "

send "exitr"
expect eof

EOF

done

3、安装Ansible 环境 及pssh 环境包

sudo sed -i -re 's/w+.archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list

sudo apt-get update
sudo wget #下载PSSH安装包
tar zxvf pssh-1.4.3.tar.gz
cd pssh-1.4.3
sudo wget ''
sudo python ez_setup.py
sudo python setup.py install
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get install ansible

4.配置文件/etc/ansible/ansible.cfghost_key_checking = False5.主机清单/etc/ansible/hosts6.ansible命令的使用说明常用选项ansible -m MOD_NAME -a MOD_ARGS表示调用什么模块,使用模块的那些参数ansible -h[root@localhost ~]# ansible -hUsage: ansible 
[options]Options: -a MODULE_ARGS, --args=MODULE_ARGS 模块的参数,如果执行默认COMMAND的模块,即是命令参数,如:“date”,"pwd"等等 module arguments 模块参数 -k, --ask-pass ask for SSH password 登录密码,提示输入SSH密码而不是假设基于密钥的验证 --ask-su-pass ask for su password su切换密码 -K, --ask-sudo-pass ask for sudo password 提示密码使用sudo,sudo表示提权操作 --ask-vault-pass ask for vault password -B SECONDS, --background=SECONDS 后台运行超时时间 run asynchronously, failing after X seconds (default=N/A) -C, --check don't make any changes; instead, try to predict some 只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化 of the changes that may occur -c CONNECTION, --connection=CONNECTION 连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。 connection type to use (default=smart) -f FORKS, --forks=FORKS 并行任务数。NUM被指定为一个整数,默认是5 specify number of parallel processes to use (default=5) -h, --help show this help message and exit 打开帮助文档API -i INVENTORY, --inventory-file=INVENTORY 指定库存主机文件的路径,默认为/etc/ansible/hosts specify inventory host file (default=/etc/ansible/hosts) -l SUBSET, --limit=SUBSET 进一步限制所选主机/组模式 --limit=192.168.91.135 只对这个ip执行 further limit selected hosts to an additional pattern --list-hosts outputs a list of matching hosts; does not execute anything else -m MODULE_NAME, --module-name=MODULE_NAME 执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数 module name to execute (default=command) -M MODULE_PATH, --module-path=MODULE_PATH 要执行的模块的路径,默认为/usr/share/ansible/ specify path(s) to module library (default=/usr/share/ansible/) -o, --one-line condense output 压缩输出,摘要输出.尝试一切都在一行上输出。 -P POLL_INTERVAL, --poll=POLL_INTERVAL 调查背景工作每隔数秒。需要- b set the poll interval if using -B (default=15) --private-key=PRIVATE_KEY_FILE 私钥路径,使用这个文件来验证连接 use this file to authenticate the connection -S, --su run operations with su 用 su 命令 -R SU_USER, --su-user=SU_USER 指定SU的用户,默认是root用户 run operations with su as this user (default=root) -s, --sudo run operations with sudo (nopasswd) -U SUDO_USER, --sudo-user=SUDO_USER sudo到哪个用户,默认为 root desired sudo user (default=root) -T TIMEOUT, --timeout=TIMEOUT 指定SSH默认超时时间, 默认是10S override the SSH timeout in seconds (default=10) -t TREE, --tree=TREE log output to this directory 将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上。 -u REMOTE_USER, --user=REMOTE_USER 远程用户, 默认是root用户 connect as this user (default=root) --vault-password-file=VAULT_PASSWORD_FILE vault password file -v, --verbose verbose mode (-vvv for more, -vvvv to enable 详细信息 connection debugging) --version show program's version number and exit 输出ansible的版本

转载地址:http://nvoel.baihongyu.com/

你可能感兴趣的文章
IIS7虚拟目录出现HTTP错误500.19(由于权限不足而无法读取配置文件)的问题
查看>>
PHP大型网站设计注意事项
查看>>
[转]“余子式”和“代数余子式”
查看>>
[Java] 计算两个日期之间的差(年 月 日)
查看>>
ThreadLocal
查看>>
How to Install MySQL Database Using Yum groupinstall on CentOS
查看>>
C 工具库7:local_pool
查看>>
设计模式原则—合成/聚合复用原则(四)
查看>>
syslog介绍(二):Linux下syslog基本配置
查看>>
Packet Tracer 5.0实验(六) 路由器基本配置
查看>>
Instructions函数对照表:01 mmintrin.h与MMX指令集
查看>>
C/C++函数调用过程分析
查看>>
Servlet总结
查看>>
c++调用java时得到java签名的方法javap -s -p <classname>
查看>>
Linux下查看apache连接数
查看>>
HDU 3660 Alice and Bob's Trip
查看>>
android 获取手机中所有的传感器Sensor类使用方法
查看>>
JavaScript基础 ( 3 章 )
查看>>
HTML5标签
查看>>
在移位数组中查找数
查看>>