文档章节

第1章 Ansible 简介

o
 osc_n6euf5h6
发布于 2019/03/20 07:51
字数 983
阅读 3
收藏 0

1. Ansible 优点

(1) 易读的语法:Ansible使用playbook作为配置管理脚本,playbook是基于YAML开发的,是一种易于读写的数据格式
(2) 远程主机无须安装任何依赖:被Ansible管理的远程主机,只需要安装SSH和Python即可,无须再安装其他任何Agent程序
(3) 基于推送模式:Ansible在服务器端修改playbook并推送到远程主机执行,这样做的好处是直接由你来控制变更在服务器上发生的时间
(4) 管理小规模集群:Ansible可以轻松扩展至管理成百上千的节点,也有向下收缩规模的能力,只需要编写一个Ansible脚本文件即可
(5) 内置模块:Ansible内置了一系列模块,通过模块,你可以执行像安装软件包 、重启服务或复制配置文件这样的任务

2. Ansible 如何运作

(1) Ansible 是通过 playbook 脚本来进行配置管理的,playbook 中定义要执行的任务
(2) 对于每一个任务,Ansible 都是在所有主机之间并行执行的
(3) 在下一个任务开始之前,Ansible 会等待所有主机都完成上一个任务
(4) Ansible 会按照你指定的顺序来运行任务

3. Ansible 安装

只需要在服务器端安装 Ansible 即可,是基于 sshd 去远程控制客户端主机的

[root@localhost ~]$ yum install -y epel-release
[root@localhost ~]$ yum install -y ansible


4. 使用 Vagrant 创建测试服务器

我们在一台 Linux 服务器上安装 Ansible,作为 Ansible 服务端,使用 Vagrant 创建多台虚拟机,作为 Ansible 客户端

安装 CentOS7 图形界面:https://www.linuxidc.com/Linux/2018-04/152000.htm

安装 Vagrant 流程:https://www.howtoing.com/how-to-install-vagrant-on-centos-7

[root@localhost ~]# mkdir playbooks && cd playbooks          //创建一个专门存储 Ansible playbook 的目录
[root@localhost playbooks]# vagrant init ubuntu/trusty64     //创建一个64位 Ubuntu 虚拟机镜像对应的 Vagrant 配置文件
[root@localhost playbooks]# vagrant up                       //启动虚拟机,第一次会根据 Vagrant 配置文件去下载镜像文件
[root@localhost playbooks]# vagrant ssh                      //用于连接到虚拟机
[root@localhost playbooks]# vagrant ssh-config               //用于查看SSH连接信息


5. 将测试服务器的信息配置在 Ansible 中

Ansible 只能管理那些它明确了解的服务器,需要在 inventory 文件中指定被管理的服务器的信息

Ansible 默认使用 /etc/ansible/hosts 作为 inventory 文件,不过我们一般不使用它,放在和 playbook 目录一起进行控制

如下信息中,testserver 是主机别名,其他需要明确的信息有主机IP 、主机端口 、主机用户 、连接的密钥文件,这些信息可以通过 vagrant ssh-config 查看

[root@localhost playbooks]# cat hosts    //inventory文件,用于定义被Ansible管理的主机资源
testserver ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=/root/playbooks/.vagrant/machines/default/virtualbox/private_key
[root@localhost playbooks]# ansible testserver -i hosts -m ping    //使用ping模块进行测试
testserver | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}


6. 使用 ansible.cfg 来简化配置

在上面的例子中,我们需要在 inventory 文件中明确定义被管理的主机的许多信息,如果有多台被管理主机,那么需要定义的信息更多

因此,我们可以使用 ansible.cfg 文件来简化配置,这个文件用来定义一些默认值,这样我们就不需要对同样的内容输入很多遍,如下

[root@localhost playbooks]# cat ansible.cfg 
[defaults]
inventory = hosts         //指定inventory文件位置
remote_user = vagrant     //指定使用SSH登录的用户
private_key_file = /root/playbooks/.vagrant/machines/default/virtualbox/private_key   //指定SSH私钥文件
host_key_checking = False  //关闭 host key 检查,这样做的目的是当我们创建一个新的虚拟机时,不需要再编辑 ~/.ssh/known_hosts 文件

有了默认配置,我们就可以简化 inventory 文件的配置了:

[root@localhost playbooks]# cat hosts 
testserver ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
[root@localhost playbooks]# ansible testserver -i hosts -m ping
testserver | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

 

 

 

 

 

 

 

     

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

如何在Ruby中生成随机字符串 - How to generate a random string in Ruby

问题: I'm currently generating an 8-character pseudo-random uppercase string for "A" .. "Z": 我目前正在为“ A” ..“ Z”生成一个8个字符的伪随机大写字符串: value = ""; 8.times{......

法国红酒甜
29分钟前
12
0
Python中的mkdir -p功能[重复] - mkdir -p functionality in Python [duplicate]

问题: This question already has an answer here: 这个问题在这里已有答案: How can I safely create a nested directory? 如何安全地创建嵌套目录? 25 answers 25个答案 Is there a way...

技术盛宴
今天
15
0
原价500元的认证证书,限时免费考取!

本文作者:y****n 百度云智学院致力于为百度ABC战略(人工智能、大数据、云计算)提供人才生态体系建设,包括基于百度ABC、IoT的课程体系,整合百度优势技术能力的深度学习技术、Apollo无人车...

百度开发者中心
昨天
17
0
在virtualenv中使用Python 3 - Using Python 3 in virtualenv

问题: Using virtualenv , I run my projects with the default version of Python (2.7). 使用virtualenv ,我使用默认版本的Python(2.7)运行项目。 On one project, I need to use Pyth......

富含淀粉
今天
16
0
Python的__init__和self是做什么的? - What __init__ and self do on Python?

问题: I'm learning the Python programming language and I've came across something I don't fully understand. 我正在学习Python编程语言,遇到了一些我不太了解的东西。 In a method ......

javail
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部