自动化运维工具 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. Hugging Face 开源库介绍

    Hugging Face 的开源生态今年成长迅速,timm 成为新加入的成员.diffusers.evaluate 以及 skops 等各种库蓬勃发展. Transformers Transforme ...

  2. C艹 里 printf 和 cout 的区别总结

    1. printf里面打出%需要连着打出两次 打出一次默认为格式标识符 打出两次: 2. 当 未完待续

  3. angular--连接服务获取数据并展示到页面加载结束禁用按钮-分页加载-管道使用

  4. 【分析笔记】全志平台 gpio-keys 驱动应用和 stack crash 解决

    内核配置 内核版本:Linux version 4.9.56 make ARCH=arm64 menuconfig Device Drivers ---> Input device suppor ...

  5. 【学习笔记】开源库之 - sigslot (在解决浅拷贝问题的基础上增加信号拦截功能)

    前言说明 在文中<[学习笔记]开源库之 - sigslot (提供该库存在对象拷贝崩溃问题的解决方案)>已经介绍过 sigslot ,此文主要应用在实际的工作项目中时,发现会有拦截信号的需 ...

  6. Selenium中对于颜色的处理及拓展

    Selenium中对于颜色的处理及拓展 获取百度一下按钮的背景色 from selenium import webdriver from time import sleep driver = webd ...

  7. echarts入门到应用学习笔记

    背景: 做疫情数据管理可视化,需要用到热点图在web端进行数据可视化,而地图就是必不可少的一个,看完文档,可以解决大部分小白的问题,保姆级攻略,即使你的js,这些学得不咋样(我就是小菜鸟) 步骤 环境 ...

  8. Axios、Vue组件-生命周期、计算属性、Slot插槽、自定义事件、v-router、钩子函数

    Axios:网络通信 <script> var vm =new vue({ el:"#app", data(){ return{ info:{ //返回的数据必须和js ...

  9. jquery(三:jquery的动画)

    动画 一:1.显示 show() 参数:1.代表动画执行的时长,毫秒数,也可以是代表时长的字符串 fast normal slow 2.代表方法执行完毕的回调函数 默认的是:normal $(func ...

  10. js实现图片选中马上显示图片名,选择后可以预览,即选即显

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...