自动化运维工具 Ansible
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
首先安装

Ansible安装

ansible的安装方法有多种

EPEL源的rpm包安装:
[root@ansible ~]#yum install ansible
编译安装
yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
tar xf ansible-1.5.4.tar.gz
cd ansible-1.5.4
python setup.py build
python setup.py install
mkdir /etc/ansible
cp -r examples/* /etc/ansible
Git方式
git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
pip 安装

pip 是安装Python包的管理器,类似 yum

yum install python-pip python-devel
yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel
pip install --upgrade pip
pip install ansible --upgrade
确认安装
[root@ansible ~]#ansible --version
ansible 2.9.5
config file = /etc/ansible/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, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
##ansible目录结构
 
## 以下为安装 docker 及 docker-compose 的ansible-playbook 直接上干货
[root@docker ansible]# tree
.
├── ansible.cfg
├── hosts
├── roles
│   ├── docker
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yaml
│   │   ├── meta
│   │   ├── tasks
│   │   │   └── main.yaml
│   │   ├── templates
│   │   │   └── daemon.json.j2
│   │   └── vars
│   │       └── main.yaml
│   └── docker-compose
│       ├── files
│       │   └── docker-compose-Linux-x86_64
│       ├── handlers
│       ├── meta
│       ├── tasks
│       │   └── main.yaml
│       ├── templates
│       └── vars
│           └── main.yaml
└── work_dir
    ├── install_docker-compose.retry
    ├── install_docker-compose.yaml
    ├── install_docker.retry
    └── install_docker.yaml
 
##解释各个目录作用
[root@docker docker]# tree
.
├── files         必要的一些需要的文件存放目录
├── handlers
│   └── main.yaml    handler处理的动作
├── meta          元数据存放的一些依赖
├── tasks
│   └── main.yaml    主要执行的任务
├── templates
│   └── daemon.json.j2      一些配置文件的存放
└── vars
    └── main.yaml          变量设置的存放目录
 
[root@docker docker]# cat tasks/main.yaml
- name: install required packages
  yum:
    name: "{{ item }}"           需要进行安装的一些包名
    state: present               安装的包的状态
  with_items:                    对应上面的item(可以循环操作)
    - yum-utils
    - device-mapper-persistent-data
    - lvm2
 
- name: add docker repo to /etc/yum.repos.d
  shell: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  register: result              将shell的操作结果注册为result
 
- name: install docker-ce
  yum:
    name: docker-ce
    state: present
  when: result|success           如果上面的result为success,则该任务执行
 
- name: create /etc/docker
  file:
    path: "{{ docker_config_dir }}"          利用file模块进行创建一个目录,引用变量
    state: directory
 
- name: start docker service
  systemd:                         centos7开启服务,添加到启动项
    name: docker
    state: started
    enabled: true
 
- name: provide docker-ce configfile
  template:
    src: daemon.json.j2                 提供配置文件
    dest: /etc/docker/daemon.json
  notify: restart docker                  配置文件修改了触发通知机制,提醒handler
 
[root@docker docker]# cat handlers/main.yaml
- name: restart docker
  systemd:
    name: docker
    state: restarted            触发机制后,将服务进行重启
    enabled: true
 
 
[root@docker docker]# cat vars/main.yaml
docker_config_dir: /etc/docker
 
[root@docker docker]# cat templates/daemon.json.j2
{
  "registry-mirrors": ["https://cbd49ltj.mirror.aliyuncs.com"]
}
 
[root@docker work_dir]# tree
.
├── install_docker-compose.retry
├── install_docker-compose.yaml
├── install_docker.retry
└── install_docker.yaml
 
[root@docker work_dir]# cat install_docker.yaml
- hosts: container_nodes         对应hosts配置文件的两个节点
  remote_user: root              执行使用root用户
  roles:
    - docker                  针对的role名称
 
[root@docker work_dir]# ansible-playbook install_docker.yaml --syntax-check        
 
playbook: install_docker.yaml
 
[root@docker work_dir]# ansible-playbook install_docker.yaml
 
##以下为安装 docker-compose的 ansible-playbook
 
[root@docker docker-compose]# tree
.
├── files
│   └── docker-compose-Linux-x86_64           docker-compose的二进制文件
├── handlers
├── meta
├── tasks
│   └── main.yaml
├── templates
└── vars
    └── main.yaml
 
 
[root@docker docker-compose]# cat tasks/main.yaml
- name: copy docker-compose-Linux-x86_64 to /usr/local/bin
  copy:
    src: ../files/docker-compose-Linux-x86_64              这里可以使用相对路径,可以使用绝对路径
    dest: "{{ docker_compose_dir }}/docker-compose-Linux-x86_64"
 
- name: install docker-compose
  shell: cd "{{ docker_compose_dir }}" && mv docker-compose-Linux-x86_64 docker-compose && chmod +x docker-compose
 
[root@docker docker-compose]# cat vars/main.yaml
docker_compose_dir: /usr/local/bin
 
[root@docker work_dir]# cat install_docker-compose.yaml
- hosts: container_nodes
  remote_user: root
  roles:
    - docker-compose
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Ansible 实记的更多相关文章

  1. Sed 实记 · laoless's Blog

    sed编辑命令 p 打印匹配行 = 打印文件行号 a 在定位行之后追加文本 i 在定位行之前插入文本 d 删除定位行 c 用新文本替换定位文本 s 使用替换模式替换相应模式 r 从另一个文件读取文本 ...

  2. ansible随记

    先来看一下ansible架构图: 一.官网的语法简单介绍 #选择的主机组 - hosts: webservers #这个是变量   vars:     http_port: 80     max_cl ...

  3. 【Ansible】记一次技术博客害死人的经历——ansible模板变量注入探究

    风和日丽,夏天的北京湿热并举,睁不开的眼睛里,横竖都看着是“吃人”. 带薪学习的日子不好过,要在几天内迅速掌握导师下发要求学习的技能,看着以前一起蹲IT坑的同事人来人往,用隔壁同性黄同学的话来说,就是 ...

  4. awk处理实记

    经grep日志后得到的数据格式如下: } . [debug][-- ::] SendDataStyled:{ , "innings" : "6189269620_0007 ...

  5. 实记JLink刷固件方法

    最近J-Link调试程序,不知何故,USB报无法连接,试了别的电脑也是这样.文件存于“百度网盘/05.组装维修/4.单片机/1.JLink-ARM仿真器”下.所有的操作基于WIN7 32位系统. 1. ...

  6. tomcat 优化实记

    好记性不如烂笔头,以下是 tomcat 无脑优化 1.内存设置(VM参数调优)(1). Windows环境下,是tomcat解压版(执行startup.bat启动tomcat)  解决办法:修改“%T ...

  7. asp.net mvc项目实记-开启伪静态-Bundle压缩css,js

    百度这些东西,还是会浪费了一些不必要的时间,记录记录以备后续 一.开启伪静态 如果不在web.config中配置管道开关则伪静态无效 首先在RouteConfig.cs中中注册路由 routes.Ma ...

  8. SpringBoot + SpringCloud学习踩坑实记

     踩的坑: 1).springcloud框架中,依赖一直报错,很可能是没有添加springcloud的依赖,或者是依赖的版本号过低.并且springboot也有一个父依赖. 2.springcloud ...

  9. springboot 完整企业项目搭建实记

    昨天搭建ssm框架时突然想到可以搭建springboot来完美解决配置复杂的问题,今天学习了一下springboot的搭建,在此记录一下搭建的过程和踩过的坑 这里给自己定一个该框架搭建完成的目标,如下 ...

  10. 实记处理mongodb的NUMA问题

    一次在启动mongodb的过程中,出现过NUMA这个问题, mongodb日志显示如下: WARNING: You are running on a NUMA machine. We suggest ...

随机推荐

  1. vue 解决循环引用组件/动态组件/组件未注册报错

    使用动态组件报错 Unknown custom element: - did you register the component correctly? For recursive component ...

  2. 关于VBA中,activesheet用法的一些思考

    前二天,给财务部做了个数据采集的工具,因为财务现在用的是excel2013 和2017的版本,所以我决定不用python,改用VBA来处理这个工具. 在 写过程的时候,我用了sheets(i)来定位表 ...

  3. css之transform属性的使用

    1.定义:Transform属性应用于元素的2D或3D转换.这个属性允许你将元素旋转,缩放,移动,倾斜等. 2.常用的属性值: (1)translate(移动):   这个属性值里面含有三个参数,依次 ...

  4. 【HMS Core】使用机器学习服务和搜索服务识别植物

    ​1.介绍 总览 机器学习服务(ML Kit)为开发者提供简单易用.服务多样.技术领先的机器学习能力,助力开发者更快更好地开发各类AI应用.同时,搜索服务(Search Kit)通过端侧SDK和云侧A ...

  5. React Refs-知识点整理记录

    一.Refs的作用 通过Refs,可以访问到 1. DOM节点. 2. render方法中创建的React元素.(class组件的实例) 二.访问节点或者实例有什么用?为什么要使用Refs来访问? 访 ...

  6. 为什么 TCP 建立连接需要三次握手(转载)

    为什么 TCP 建立连接需要三次握手(转载) 原文链接:https://draveness.me/whys-the-design-tcp-three-way-handshake/ TCP 协议是我们几 ...

  7. Cesium源码之flyTo(一)

    1 /** 2 * Flies the camera from its current position to a new position. 3 * 4 * @param {Object} opti ...

  8. Java基础语法:运算符、包机制、JavaDoc

    Java基础语法:运算符.包机制.JavaDoc 自增.自减.一元运算符:++.-- 例子:b = a++; -->先给b赋值,a再自增:b=a; a=a+1; b = ++a; -->a ...

  9. 在真实世界中观察目标治疗策略实施1年对初诊RA患者的影响

    在真实世界中观察目标治疗策略实施1年对初诊RA患者的影响 Tan AL, et al. Rheumatology 2016.Present ID: 083. 背景:制订目标治疗(T2T)建议是要将获得 ...

  10. [EULAR文摘] 超声对已获临床低活动度RA患者病情复发的预测

    标签:eular文摘; 超声评估; 病情预测 超声对已获临床低活动度RA患者病情复发的预测 Lamers-Karnebeek FBG, et al. EULAR 2015.Present ID: OP ...