Ansible的简介和剧本的简单使用

Ansible简介

Ansible:自动化运维工具,基于python编写,可用于执行批量操作

具有两种特性:

1.Agentless: 没有Agent的存在,即不需要在目标主机(被控制端)上安装任何软件。仅需通过SSH连接客户机执行任务即可

2.幂等性:所谓幂等性就是无论执行多少次同样的操作结果都是一样的。

Ansible基本概念

1.inventory:主机清单,用来声明要远程操作的主机

2.modules(重要): ansible执行命令的各个功能模块

3.api:供第三方应用程序调用的编程接口

4.playbook(重要):基于yaml格式的文本文件,用于定义和描述一系列任务

Ansible基本命令格式

直接调用某个模块的命令:

ansible 主机组名 -m 模块名 -a "参数"

调用剧本的命令

ansible-playbook 剧本名

Ansible常用模块

所有模块的详细参数在官网有详细的解释,在此不做赘述

详细参考:

【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)_ansible自动化运维实例-CSDN博客

ansible 中的模块 | Ansible 学习

1.command模块 

默认模块,在远程主机执行命令,注意:command模块不支持管道符和重定向符

2.shell模块

常用参数功能
chdir在远程主机上运行命令前,提前进入目录
creates判断指定文件是否存在,如果存在,不执行后面的操作
removes判断指定文件是否存在,如果存在,执行后面的操作

和command模块类似,在远程主机执行命令,相当于远程调用shell进程,支持管道符和重定向符

3.script模块

在远程节点上运行本地脚本。

4.copy模块

批量分发文件

5.yum/apt模块

在远程主机通过yum/apt方式安装软件

6.service模块

管理服务

注意:有个模块叫systemd,是系统服务管理模块,但是昨天用它来启动服务一直报错,用service却不会,不知道什么原因,查看官方文档没有相应的参数。

Ansible剧本的简单使用

剧本是ansible中一个重要的概念,通过编写剧本可以实现复杂的操作,下面以批量安装docker-ce来实例(虽然可能不实用),主要学习yaml文件的格式。

想要实现剧本,首先得要知道手工实现的流程,然后通过yaml格式来进行记录流程,去华为云镜像官网查看安装docker-ce的安装流程

剧本的大致格式如下:

一定要注意缩进关系,缩进关系代表了层级关系,yaml文件一般缩进两个空格.

一个tasks中可以调用多个模块,一个tasks中不是只有一个模块.

- name: 随意名称
  tasks: #任务1
    - name: 随意名字
      yum:  #这是要调用的模块的名字
        name: nginx #这是模块的参数
        state: present
  tasks: #任务2
    ......
  tasks: #任务3
    ......

由图可知,安装daocker-ce大致有以下流程:

1.卸载原有的docker组件

2.下载一些必要软件包

3.下载源文件.repo并对内容进行替换

4.重新构建yum源并安装

完成上述操作后我们只是进行了一个最基础的安装,还没有修改docker的拉取源,所以我们还需要改一下配置文件,在这里我直接把本地改好的进行分发.

5.分发配置文件,启动docker并设置开机自启.

完整剧本如下:

---
- name: 安装docker
  hosts: docker_hosts
  tasks:
    - name: 开始卸载
      yum:  #调用yum模块
        name:
          - docker
          - docker-common
          - docker-selinux
          - docker-engine
        state: absent

    - name: 开始安装
      yum: #调用yum模块
        name:
          - yum-utils
          - device-mapper-persistent-data
          - lvm2
          - wget
        state: present
  tasks:
    - name: 开始下载文件
      shell:  #调用shell模块
        chdir: /etc/yum.repos.d
        cmd: wget https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
      shell: #调用shell模块
        cmd: sudo sed -i 's+download.docker.com+mirrors.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
    - name: 安装docker
      shell:  #调用shell模块
        cmd: yum makecache fast && yum -y install docker-ce
    - name: 写入配置文件
      copy:  #调用copy模块将本地配置文件分发到目标主机
        src: /etc/docker/daemon.json
        dest: /etc/docker/daemon.json
    - name: 服务自启动
      service:  #调用service模块启动docker并设置开机自启
        name: docker
        state: restarted
        enabled: true

我的 /etc/docker/daemon.json文件如下所示,

{
"insecure-registries": ["119.3.224.205:5000"]
}

因为最近docker hub无法访问,我用的其他镜像也无法访问,所以构建了一个本地镜像,我把它放到了服务器上面,可以通过以下命令查看包含哪些镜像:

curl -XGET 119.3.224.205:5000/v2/_catalog

结果如下:

 

运行剧本

注意:剧本名要以 .yaml或者.yml结尾.

ansible-playbook 剧本名称

运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值