Ansible简介和安装

1.Ansible是什么?

关于Ansible
Ansible是一种IT自动化工具。它可以帮助我们批量配置系统,部署软件以及协调更高级的IT任务,例如连续部署或零停机滚动更新。
Ansible的主要目标是让工作变得简单和易操作,它同时也非常关注安全性和可靠性,传输过程是基于openssh来实现的,保证了传输的数据的安全性!大大降低安全风险!

2.Ansible的特点

  • Ansible采用无代理方式(agentless)管理机器,因为Ansible的通信是通过openssh来实现的,所以你无需考虑如何远程升级受管机器的代理程序!只要可以保证openssh可以正常通信即可!因为现在几乎所有的Linux平台都自带了openssh,Ansible在部署阶段无需考虑在远程机器上安装客户端软件!这样极大的减少了前期部署的工作!
  • Ansible有丰富的模块可以让你直接使用,当然在Ansible的社区也有很多优秀的开发者在贡献新的模块,所以你总会找到适合自己的模块,当然你也可以自己开发模块!
    Ansible是使用python开发,所以关于Ansible的二次开发和模块开发成本相对较低

3.Ansible的工作流程3Ansible的工作流程

在这里插入图片描述

4.Ansible的一些基本概念

控制节点

任何装有Ansible的机器都可以叫做控制节点。您可以从任何控制节点调用/usr/bin/ansible执行一条任务,或执行/usr/bin/ansible-playbook命令读取剧本执行多个任务

受管节点

使用Ansible管理的的网络设备和服务器,都可以叫做受管节点!受管节点有时也可以叫做“主机“,受管节点无需安装ansible

清单( inventory )

受管节点的列表。Ansible在管理某个节点前,需要先将节点添加到清单文件中!清单文件有时也称为“主机清单文件”。清单文件可以为每个受管节点指定信息,例如IP地址、端口等信息!也可以把主机分成主机组管理!

模块(Modules)

Ansibe执行代码的单位。Ansible自带了很多模块,每个模块都有特定的用途。我们可以通过任务调用单个模块,例如shell模块,可以调用shell命令在管理主机执行。
也可以在剧本中调用多个不同的模块!想要了解更多模块信息可以访问官方模块列表地址:https://docs.ansible.com/ansible/latest/modules/modules_by_category.html#modules-by-category

任务(Tasks)

Ansible执行的单位,可以使用临时命令一次执行一个任务

剧本(Playbooks)

任务的有序列表文件,所以我们可以重复读取剧本文件重复运行剧本内的任务!这个是我们执行任务的主要方式

5.Ansible的安装

  • 环境要求
    Ansible要求主机上有Python2.7或者python3.5以上的环境,在Red Hat,Debian,CentOS,macOS,任何BSD等系统上可以直接安装。但是控制节点不支持windonws平台!
    我们这里准备3台Centos系统的虚拟机,一台为Centos7用来安装Ansible扮演我们的控制节点,另外两台我们可以使用Centos6,扮演受管节点

1.在Centos上安装控制节点

  • 在Centos6版本的系统上ansible安装包还未被加入到yum的base源中,需要安装epel源之后才可以安装ansible
    yum -y install epel-release
    yum -y install ansible
  • 在Centos7上时,ansible安装包已经被加入到了yum的base源中,所以可以直接使用yum安装
    yum -y install ansible
  • 新版本安装包可以去官方获取:
    https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/
  • 当然安装方式还支持源码安装,我们可以去Github上获取源码或者使用python的pip安装都是可以的:
    大家可以参考官方的文档:https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#what-version-to-pick
  • Ansible安装完毕后可以直接使用,无需启动!

2.在受管节点要注意的事项

  • 在受管节点上,您需要一种通信方式,通常是ssh,还需要有Python 2(2.6版或更高版本)或Python 3(3.5版或更高版本)
  • 这些环境在Centos6以上版本的系统上都是默认满足的!所以可以不用做任何配置!
  • 但是如果受管节点上启用了SElinux,那么需要安装libselinux-python,这个我们可以直接使用yum安装:yum -y install libselinux-python

3.ssh无密码连接配置

  • 控制节点在和受管节点在通信时是通过openssh建立的,所以控制节点在和受管节点建立通信时肯定需要账号和密码的认证!每次执行任务都需要输入账号和密码在使用过程当中是很不方便的!所以我们这里要建立起控制节点和受管节点的授信配置,通过公钥认证来实现控制节点和受管节点ssh的无密码连接!
  • 在控制节点操作:
  • 生成密钥对
    ssh-keygen -t rsa
  • 拷贝公钥到受管节点
    ssh-copy-id 受管节点用户@ip
    首次拷贝需要再输入一次密码才可以将公钥复制过去,输入完毕后以后再连接就不需要输入账号密码了!

4.编辑主机清单文件(Inventory)

我们需要将所有受管节点以主机名或者ip的形式添加的主机清单文件中

  • 例如如下格式添加:
    192.0.2.50
    aserver.example.org
    bserver.example.org
    当然我们也可以分组:
    [webservers]
    192.0.2.50
    aserver.example.org
    bserver.example.org
    中括号中的webservers就是定义的组名,下面3台服务器是这个组的成员主机
    我们也可以按如下格式添加主机
    [webservers]
    192.0.2.[50:100]
    web[a:f]server.example.org

5.测试

  • ansible执行一条任务的语法格式:
    ansible 主机/主机组 -m 模块 -a ‘模块的参数‘
  • 我们使用ping模块ping清单文件中所有节点,查看是否可达
    ansible all -m ping
    有如下返回说明节点都可达,all代表所有主机
    在这里插入图片描述
    当然我们也可以指定组或者主机操作
    ansible webservers -m ping
    我们再来在受管节点执行一条命令,查看受管节点的ip信息
    ansible all -a ‘ifconfig’
    发现我们这条命令没有指定调用哪个模块,那么他会使用默认模块,默认模块为command,作用是在受管节点执行普通命令
    类似的模块还有很多,下面我们会列举一些常用的模块讲解!

6.练习:

请使用Ansible实现批量部署Apache,并启动Apache访问测试!

6.Ansible的配置文件

Ansible中的某些设置可以通过配置文件(ansible.cfg)进行调整,对于大多数环境默认配置就足够使用了,但是也可能会有一些特殊的原因我们需要修改这些配置参数!

  • 配置文件路径
    在Centos上yum安装的ansible,默认的配置文件路径如下:
    配置文件:/etc/ansible/ansible.cfg
发布了16 篇原创文章 · 获赞 0 · 访问量 418

猜你喜欢

转载自blog.csdn.net/weixin_46369755/article/details/104738064