ansible之介绍及环境部署

一、Ansible介绍

Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)

1.1 ansible基础架构

在这里插入图片描述

  • **Ansible:**Ansible核心程序。
  • **HostInventory:**记录由Ansible管理的主机信息,包括端口、密码、ip等。
  • Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
  • CoreModules核心模块,主要操作是通过调用核心模块来完成管理任务。
  • CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言
  • ConnectionPlugins:连接插件,Ansible和Host通信使用

二、环境部署

1、实验环境

这里我准备了两台centos7的虚拟机,一台ip为192.168.189.129作为管理端,另一台192.168.189.134作为被管理端,可以先对他们的主机名称修改,便于实验时识别

#192.168.189.129
hostnamectl set-hostname ansible_center
#192.168.189.134
hostnamectl set-hostname ansible_node1

2、安装

ansible安装常用两种方式,yum安装pip程序安装。下面我们来详细介绍一下这两种安装方式。

使用 pip(python的包管理模块)安装

首先,我们需要安装一个python-pip包,安装完成以后,则直接使用pip命令来安装我们的包,具体操作过程如下:

    yum install python-pip -y
    pip install ansible

使用 yum 安装

    yum install ansible –y

3、密钥部署

使用密钥部署可以让 center免密登录远程主机,该操作在管理端center进行

4、配置文件(/etc/ansible)详解

4.1 主配置文件 ansible.cfg

ansible 有许多参数,下面我们列出一些常见的参数:

    inventory = /etc/ansible/hosts      #这个参数表示资源清单inventory文件的位置
    library = /usr/share/ansible        #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
    forks = 5       #并发连接数,默认为5
    sudo_user = root        #设置默认执行命令的用户
    remote_port = 22        #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
    host_key_checking = False       #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
    timeout = 60        #设置SSH连接的超时时间,单位为秒
    log_path = /var/log/ansible.log     #指定一个存储ansible日志的文件(默认不记录日志)

4.2 主机&主机组定义文件 hosts

该文件保存的是一些 ansible 需要连接管理的主机列表。定义方式如下:

#1、 直接指明主机地址或主机名:
    192.168.189.134
#2、 定义一个主机组[组名]把地址或主机名加进去
    [test]
    192.168.189.134
    192.168.189.130

4.3 roles 角色目录

5、常用命令

5.1 ansible-doc

ansible-doc 命令常用于获取模块信息及其使用帮助,一般用法如下:

    ansible-doc -l              #获取全部模块的信息
    ansible-doc MOD_NAME     #获取指定模块的使用帮助
    ansible-doc -s MOD_NAME     #只显示模块关键参数

ansible-doc的全部用法:

[root@server ~]# ansible-doc
Usage: ansible-doc [options] [module...]

Options:
  -h, --help            show this help message and exit  # 显示命令参数API文档
  -l, --list            List available modules  #列出可用的模块
  -M MODULE_PATH, --module-path=MODULE_PATH  #指定模块的路径
                        specify path(s) to module library (default=None)
  -s, --snippet         Show playbook snippet for specified module(s)  #显示playbook制定模块的用法
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable  # 显示ansible-doc的版本号查看模块列表:
                        connection debugging)
  --version             show program's version number and exit
5.2 ansible

命令的具体格式如下:

ansible <host-pattern> [-f forks] [-m module_name] [-a args]

也可以通过ansible -h来查看帮助,下面我们列出一些比较常用的选项,并解释其含义:

-a MODULE_ARGS   #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”等等
-k--ask-pass #ask for SSH password。登录密码,提示输入SSH密码而不是假设基于密钥的验证
--ask-su-pass #ask for su password。su切换密码
-K--ask-sudo-pass #ask for sudo password。提示密码使用sudo,sudo表示提权操作
--ask-vault-pass #ask for vault password。假设我们设定了加密的密码,则用该选项进行访问
-B SECONDS #后台运行超时时间
-C #模拟运行环境并进行预运行,可以进行查错测试
-c CONNECTION #连接类型使用
-f FORKS #并行任务数,默认为5
-i INVENTORY #指定主机清单的路径,默认为/etc/ansible/hosts
--list-hosts #查看有哪些主机组
-m MODULE_NAME #执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
-o #压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用
-S #用 su 命令
-R SU_USER #指定 su 的用户,默认为 root 用户
-s #用 sudo 命令
-U SUDO_USER #指定 sudo 到哪个用户,默认为 root 用户
-T TIMEOUT #指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u REMOTE_USER #远程用户,默认为 root 用户
-v #查看详细信息,同时支持-vvv-vvvv可查看更详细信息

5.3 ansible-playbook

该命令用来执行剧本

默认为10s,也可在配置文件中修改

-u REMOTE_USER #远程用户,默认为 root 用户
-v #查看详细信息,同时支持-vvv-vvvv可查看更详细信息

5.3 ansible-playbook

该命令用来执行剧本

发布了22 篇原创文章 · 获赞 2 · 访问量 596

猜你喜欢

转载自blog.csdn.net/weixin_42955452/article/details/104980224