当前位置: 首页 > news >正文

ansible的介绍,安装与部署

ansible的介绍,安装与部署

文章目录

    • ansible的介绍,安装与部署
      • 一. ansible的介绍
        • 1. 含义
        • 2. ansible 架构图
        • 3. [ansible核心模块网址](https://docs.ansible.com/ansible/latest/collections/index_module.html)
        • 4. ansible 无需代理
        • 5. 优点
        • 6. 工作方式
        • 7. ansible 的控制节点
        • 8. 受管主机
      • 二. 安装ansible
      • 三. 部署ansible
        • 1. 定义清单
        • 2. 使用静态清单指定受管主机
        • 3. 验证清单
        • 4. 覆盖清单的位置
        • 5. 构建清单文件
        • 6. 管理Ansible配置文件
        • 7. 管理配置文件中的设置
          • 7.1 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  CurrentDload  Upload   Total   Spent    Left  Speed0     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.orgbeta.example.org192.168.1.100192.168.1.110www[001:006].example.com //001006上面是一组[dbservers]
    db01.intranet.mydomain.net
    db02.intranet.mydomain.net
    10.25.1.56db-[99:101]-node.example.com
    
3. 验证清单
验证主机
[root@SYL2 ansible]# vim hosts 
[root@SYL2 ansible]# ansible node1 --list-hostshosts (1):node1
[root@SYL2 ansible]# ansible node2 --list-hosts
[WARNING]: Could not match supplied host pattern, ignoring: node2
[WARNING]: No hosts matched, nothing to dohosts (0):
[root@SYL2 ansible]# 主机组    
[root@SYL2 ansible]# vim hosts 
[root@SYL2 ansible]# ansible webs --list-hostshosts (2):node1node2
[root@SYL2 ansible]#
使用以下命令列出默认清单文件中的所有受管主机
[root@SYL2 ansible]# ansible all --list-hostshosts (2):node1node2
[root@SYL2 ansible]# 
使用以下命令列出不属于任何组的受管主机
[root@SYL2 ansible]# vim hosts 
[root@SYL2 ansible]# ansible ungrouped --list-hostshosts (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-hostshosts (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-hostshosts (1):SYL3
[root@SYL2 httpd]# 临时生效
[root@SYL2 httpd]# export ANSINLE_CONFIG=/opt/httpd/ansible.cfg //环境变量
[root@SYL2 httpd]# ansible --version
ansible 2.9.27config file = /opt/httpd/ansible.cfgconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python3.6/site-packages/ansibleexecutable location = /usr/bin/ansiblepython 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。
http://www.xdnf.cn/news/846937.html

相关文章:

  • 数据结构——队列(Queue)
  • Lambda 表达式
  • Linux系统之安装mariadb方法
  • GCC工具详解【Linux知识贩卖机】
  • Maven:mirror和repository 区别、pom.xml 指定仓库地址、releases 和 snapshots 区别
  • 数据要素全流程解析
  • 信息系统项目管理
  • Go编程基础教程:Go网络安全
  • 【kubernetes详解13】-DashBoard部署
  • 网络安全CTF系列培训教程之Web篇-burpsuite爆破弱密码
  • 新建vm 配置环境
  • Spring Cloud 简介
  • k8s集群的pod理论详解
  • Python爬虫详细教程,从零基础入门到精通,看完这一篇就够了!
  • 【机器学习】机器学习是什么?
  • MyBatis-Plus详解
  • Kali 2023年最新版下载安装最全流程功能介绍(内附安装包)
  • 全站最全Tampermonkey 油猴插件指南,不看后悔一辈子
  • Mysql的安装和配置教程(超详细图文)从零基础入门到精通,看完这一篇就够了
  • SQL cast()函数
  • select简单使用
  • Unity移动应用如何在Bugly上查看崩溃堆栈
  • 【Python】【进阶篇】四、Python爬虫的URL编码/解码
  • ASCII码表完整版
  • Postman下载安装教程
  • XML简介及举例
  • 阿里图标库使用(Unicode)展示图标
  • pip基本使用
  • Linux基本指令(超详版)
  • Three.js学习1:threejs简介及文档本地部署