一·Introduction Ansible
1)什么是Ansible?
- Ansible是一款开源的配置管理和编配的实用程序,可以对远程主机与虚拟机进行自动化与标准化配置
- 编配功能使Ansible能够协调多层级的应用的启动和关闭
- 管理员可以创建play,执行一系列的任务,作用与play中指定的一台或一组主机
- 包含多个play的文件成为playbook
- ansible的架构是无代理的。当ansible执行时,将推送到远程主机上执行
- Modules是执行play中任务的程序。ansible附带了数百个核心模块
- ansible非常易用。在python基础上构建。ansible受到Vagrant和Jenkins等多种Devops工具的支持
2)ansible的不足:
- ansible可以在安装中添加软件包,但无法执行系统的初始最小安装
- ansible可以纠正配置偏差,但不能对此进行监控
- ansible不能跟踪系统上的文件出现更改,建议通过版本控制软件或审计系统进行跟踪
3)Ansible的概念与架构:
- ansible架构中有两种计算机类型:控制节点与受管主机
- ansible软件安装在控制节点上,所有组件也在控制节点上维护
- 受管主机列在主机清单文本文件中,位于控制节点上,含有受管主机名称或域IP列表
- ansible使用SSH域受管主机进行通讯。playbook中运用的模块将复制到受管主机,然后使用playbook指定参数顺序执行
- 用户可按需自定义模块,但ansible的核心模块能够执行大部分系统管理任务
4)控制节点的角色与要求
● 系统管理员
● Ansible安装在控制节点,并进行维护
● 支持python2.6以上
● 对于红帽Linux需安装Ansible及其依赖包
● Windows目前不支持控制节点
4-1)受管主机角色与要求
● 受管主机是Ansible登录,安装模块并执行远程命令进行配置任务的系统
● Ansible使用SSH与受管主机通信,因此必须有openssl和配置ssh允许
● 建议python2.5以上版本
● RHEL6、7
5)Ansible用例
● Ansible可以部署和远程操控远程主机的配置文件。这些文件为静态的,也可利用模板实时创建
● Ansible也可以用作多节点的部署工具
● playbook可以定义远程计算机上的安装和配置的应用。可以统一构建playbook,将他应用到多台计算机上
● 按照Ansible的规则编配多节点应用
● 运行临时(ad-hoc)命令,使Ansible在远程主机上执行
6)CHOOSE~
1.which of the following programming languages is ansible built on?
python
2.which of the following terms best describes ansible's architecture?
Agentless
3.what us the network protocol that ansible users, by default, to communicate with managed nodes?
SSH
4.which of the following files define the actions ansible performs on managed nodes?
playbook
5.what syntax is used to define ansible playbooks?
YAML
6)Ansible部署
● ansible可简化服务器上的软件配置
● 当ansible访问受管主机,可以探查运行的RHEL版本
● ansible playbook可用于同意构建开发、测试和生产服务器
● kickstart可以准备好符合条件的裸机服务器,让ansible的接管并搭建
7)ansible的配置方法
ansible用于完成服务器的调配。编写playbook
1. 配置软件仓库
2. 安装应用
3. 修改配置文件,从版本控制器选择性下载
4. 防火墙开端口
5. 启动服务
6. 测试工作
7. 更新工具
8)Ansible连接插件
● 连接插件使得ansible能够与受管主机和云提供商通信
● 对于新版本首选SSH
● 控制节点上的openssh支持ansible的连接方式
● 最常见的做法就是通过SSH用户秘钥来获取主机管理权限
● 另一种链接插件就是local,用于本地管理ansible,而不必实用ssh。在编写云服务API接口时,通常使用这一方式,ansible由本地cron调用也可使用
● paramiko ansible链接用于RHEL6计算机。是一个基于python的openSSH,是较旧系统的解决方案。可降低ssh开销
● winrm ansible链接Windows的主机为受管主机,linux上一般不用
● ansible2引入了docker链接插件。docker主机可以充当ansible控制节点,其容器为受管主机,这种链接不需要SSH
9)CHOOSE~
1.The paramiko ansible connection plugin is used to communicate with which type of managed host?
RHEL 6
10)Ansible清单
● 主机清单定义,受管主机
● 主机可以从属于组
● 一个主机可以是多个组
● 可以通过两种方式定义主机清单:温文本文件静态主机,或从外部提供商动态生成
● 主机清单位置在/etc/ansible/hosts
$ vim /etc/ansible/hosts
[webservers]
localhost ansible_connection=local
web1.example.com
web2.example.com:1234 ansible_user=ftaylor
192.168.3.7
[db-servers]
web1.example.com
db1.example.com
主机清单可以包含多个主机构成的组,这通过:children后缀实现
[all:children]
webservers
db-servers
可以通过指定主机范围来简化Ansible的主机清单
[start:end]
例:192.168.[4:7].[0:255] //网段4~7的所以IP
server[01:20].example.com //server1~server20所有主机
可使用ansible命令测试计算机是否在清单中
11)动态主机清单
● 可以动态生成Ansible主机清单信息
● 动态清单信息的来源包括公共/私有云提供商
● ansible含有处理来自最常见的提供商的动态主机 AmazonEC2.aliyunECS3
● 对于云提供商,必须在脚本能够访问的文件中定义身份验证和访问权限信息
3)Choice~
1.Which of the following items is in an Ansible inventory file?
1. Host groups
2. IP address ranges
3. Variable definitions
4. user authentication information
2.What is the term this course users for a host from which system administrators run Ansible ?
Control node!
3.The python-simplejson package must be installed on which kind of host?
RHEL 5
4.What is the default localtion of the static system-wide Ansible inventroy file?
/etc/ansible/hosts