ansible的介绍,安装与部署

ansible的介绍,安装与部署

一. ansible的介绍

1. 含义
  • Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

  • Ansible是基于模块工作的,只提供一种框架,包括:

    • (1) 连接插件connection plugins:负责和被监控端实现通信;

    • (2) host inventory(清单):指定操作的主机,是一个配置文件里面定义管理的主机;

    • (3) 各种模块核心模块、command模块、自定义模块;

    • (4) 借助于插件完成记录日志邮件

    等功能;

    • (5) playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务
2. ansible 架构图

在这里插入图片描述

3. ansible核心模块网址
4. ansible 无需代理
  • Ansible 围绕无代理架构构建

  • 通过 OpenSSH 或 WinRM 连接它所管理的主机并且运行任务,方法通常是将称为 Ansible 模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在 Ansible 运行完其任务后,推送的所有模块都会被删除

5. 优点
  • 跨平台支持:Ansible 可以管理Linux、Windows、UNIX和网络设备(路由器交换机)的无代理支持,适用于物理(真机)、虚拟、云和容器环境

  • 人类可读的自动化:Ansible Playbook采用 YAML 文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。

  • 完美描述应用:可以通过 Ansible Playbook进行每种更改,并描述和记录应用环境的每一个方面,把达到什么效果描述出来,自动会达成那个效果。

  • 轻松管理版本控制:Ansible Playbook和项目是纯文本。它们可以视作源代码,放在现有版本控制系统中。

  • 支持动态清单(通过程序自动生成的):可以从外部来源动态更新 Ansible 管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。

  • 编排可与其他系统轻松集成:能够利用环境中现有的 HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到 Ansible 工作流中。

6. 工作方式
  • Ansible 的设计宗旨是工具易用,自动化易写易读。所以在创建自动化时我们应追求简单化

  • Ansible 是一种要求状态引擎。它通过表达你所希望系统处于何种状态来解决如何自动化IT部署的问题。Ansible 的目标是通过仅执行必要的更改,使系统处于所需的状态。试图将 Ansible 视为脚本语言并非正确的做法。

7. ansible 的控制节点
  • Ansible 软件只需要安装到要运行它的一个(或多个)控制节点上

  • 对控制节点的要求:

    • 控制节点应是Linux或UNIX系统。不支持将Windows用作控制节点,但Windows系统可以是受管主机。
    • 控制节点需要安装Python3(版本3.5或以上)或Python2(版本2.7或以上
8. 受管主机
  • 受管主机不需要安装特殊代理

  • Ansible控制节点使用标准的网络协议连接受管主机

二. 安装ansible

  • 配置yum源
[root@SYL2 ~]# cd /etc/yum.repos.d/
[root@SYL2 yum.repos.d]# ls
[root@SYL2 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:100  2495  100  2495    0     0  13633      0 --:--:-- --:--:-- --:--:-- 13633
[root@SYL2 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@SYL2 yum.repos.d]# 
[root@SYL2 yum.repos.d]# yum clean all
Failed to set locale, defaulting to C.UTF-8
36 files removed
[root@SYL2 yum.repos.d]# yum list all
[root@SYL2 yum.repos.d]# yum list all|grep ansible
[root@SYL2 yum.repos.d]# yum -y install centos-release-ansible-29   
[root@SYL2 yum.repos.d]# ls
CentOS-Base.repo  CentOS-SIG-ansible-29.repo
[root@SYL2 yum.repos.d]# cd
[root@SYL2 ~]# yum -y install ansible
 

三. 部署ansible

1. 定义清单
  • 清单定义Ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量
2. 使用静态清单指定受管主机
  • 静态清单文件是指定Ansible目标受管主机的文本文件。可以使用多种不同的格式编写此文件,包括INI样式或YAML

  • green.example.com
    blue.example.com
    192.168.100.1
    192.168.100.10
    
  • 可以将受管主机组织为主机组

  •  [webservers]
     alpha.example.org
     beta.example.org
     192.168.1.100
     192.168.1.110
    
    
    www[001:006].example.com //001006
    
    上面是一组
    
    [dbservers]
    db01.intranet.mydomain.net
    db02.intranet.mydomain.net
    10.25.1.56
    
    db-[99:101]-node.example.com
    
3. 验证清单
验证主机
[root@SYL2 ansible]# vim hosts 
[root@SYL2 ansible]# ansible node1 --list-hosts
  hosts (1):
    node1
[root@SYL2 ansible]# ansible node2 --list-hosts
[WARNING]: Could not match supplied host pattern, ignoring: node2
[WARNING]: No hosts matched, nothing to do
  hosts (0):
[root@SYL2 ansible]# 
 
主机组    
[root@SYL2 ansible]# vim hosts 
[root@SYL2 ansible]# ansible webs --list-hosts
  hosts (2):
    node1
    node2
[root@SYL2 ansible]#
使用以下命令列出默认清单文件中的所有受管主机
[root@SYL2 ansible]# ansible all --list-hosts
  hosts (2):
    node1
    node2
[root@SYL2 ansible]# 
使用以下命令列出不属于任何组的受管主机
[root@SYL2 ansible]# vim hosts 
[root@SYL2 ansible]# ansible ungrouped --list-hosts
  hosts (1):
    666
[root@SYL2 ansible]# 
4. 覆盖清单的位置
  • /etc/ansible/hosts文件被视为系统的默认静态清单文件
5. 构建清单文件
[root@SYL2 ansible]# ls
ansible.cfg  hosts  roles
[root@SYL2 ansible]# vim inventory
[root@SYL2 ansible]# ls
ansible.cfg  hosts  inventory  roles
[root@SYL2 ansible]# cat inventory 
[webs]
SYL3
[root@SYL2 ansible]# vim /etc/hosts
[root@SYL2 ansible]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.232.128 SYL3
[root@SYL2 ansible]# 

[root@SYL2 ansible]# ansible SYL3 -i /etc/ansible/inventory --list-hosts
  hosts (1):
    SYL3
[root@SYL2 ansible]# 
6. 管理Ansible配置文件
  • 使用./ansible.cfg 优先级最高

  • 使用~/.ansible.cfg

  • 使用/etc/ansible/ansible.cfg

[root@SYL2 ~]# mv httpd/ /opt/
[root@SYL2 httpd]# ls
ansible.cfg  inventory
[root@SYL2 httpd]# 
[root@SYL2 httpd]# cat ansible.cfg |grep inventory
inventory      =/opt/httpd/inventory
[root@SYL2 httpd]# ansible all --list-hosts
  hosts (1):
    SYL3
[root@SYL2 httpd]# 

临时生效
[root@SYL2 httpd]# export ANSINLE_CONFIG=/opt/httpd/ansible.cfg //环境变量
[root@SYL2 httpd]# ansible --version
ansible 2.9.27
  config file = /opt/httpd/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Jan 19 2022, 23:28:49) [GCC 8.5.0 20210514 (Red Hat 8.5.0-7)]
[root@SYL2 httpd]# 
7. 管理配置文件中的设置

Ansible配置文件由几个部分组成,每一部分含有以键值对形式定义的设置。部分的标题以中括号括起来。对于基本操作,请使用以下两部分:

  • [defaults]部分设置Ansible操作的默认值

  • [defaults]
    inventory = ./inventory
    remote_user = user
    ask_pass = false
    
    [privilege_escalation]
    become = true
    become_method = sudo
    become_user = root
    become_ask_pass = false
    
  • [privilege_escalation]配置Ansible如何在受管主机上执行特权升级

7.1 Ansible配置
指令描述
inventory指定清单文件的路径
remote_user要在受管主机上登录的用户名。如果未指定则使用当前用户名
ask_pass是否提示输入SSH密码。如果使用SSH公钥身份验证则可以是false
become连接后是否自动在受管主机上切换用户(通常切换为root)
这也可以通过play来指定。
become_method如何切换用户(通常为sudo,这也是默认设置,但可选择su)
become_user要在受管主机上切换到的用户(通常是root,这也是默认值)
become_ask_pass是否需要为become_method提示输入密码。默认为false。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值