1.安装ansible

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install ansible -y

克隆虚拟机

hostnamectl set-hostname standby

vim /etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR=10.0.0.200
UUID行删掉 vim /etc/hosts 10.0.0.200 standby
systemctl restart network
Linux的 SSHD(22)
  验证方式:
    (1)用户+密码(PAM)
    (2)秘钥验证(公钥:钥匙和私钥:锁)
      通过秘钥对实现,需要将公钥分发到各节点

2.管理被控端,管理机先生成秘钥,然后推送公钥

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.200

多台机器情况下:

[root@demo ~]# for i in {1..12};do ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.$i;done

3.配置被管理的主机清单

[root@demo ~]# vim /etc/ansible/hosts

[web]
10.0.0.100
10.0.0.200

4.使用ansible的ad-hoc测试

[root@demo ~]# ansible all -m ping

测试成功显示
------------------------------------------------------
10.0.0.12 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.0.0.11 | SUCCESS => {
"changed": false,
"ping": "pong"
}
------------------------------------------------------
#执行远程命令

[root@demo ~]# ansible all -m shell -a "df -h"

执行后结果
----------------------------------------------------------------------
10.0.0.12 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G 3.4G 95G 4% /
devtmpfs 477M 0 477M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 197M 102M 96M 52% /boot
tmpfs 98M 0 98M 0% /run/user/0 10.0.0.11 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G 1.6G 97G 2% /
devtmpfs 981M 0 981M 0% /dev
tmpfs 992M 124K 992M 1% /dev/shm
tmpfs 992M 9.6M 982M 1% /run
tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 197M 102M 96M 52% /boot
tmpfs 199M 0 199M 0% /run/user/0
----------------------------------------------------------------------

5.ansible playbook自动化安装nginx

[root@demo ~]# vim  playbook_nginx.yml 

- hosts: web
remote_user: root
vars:
http_port: 80
tasks:
- name: Add Nginx Yum Repository
yum_repository:
name: nginx
description: Nginx Repository
baseurl: http://nginx.org/packages/centos/7/$basearch/
gpgcheck: no - name: Install Nginx Server
yum:
name=nginx state=present - name: Configure Nginx Server
template: src=./default.conf.template dest=/etc/nginx/conf.d/default.conf
notify: Restart Nginx Server - name: Start Nginx Server
service: name=nginx state=started enabled=yes handlers:
- name: Restart Nginx Server
service: name=nginx state=restarted

6.default.conf.template文件如下

[root@demo ~]#vim default.conf.template 

server {
listen {{ http_port }};
server_name localhost; location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}

7.执行ansible-playbook

检查语法
[root@demo ~]# ansible-playbook --syntax playbook_nginx.yml 模拟执行
[root@demo ~]# ansible-playbook -C playbook_nginx.yml 执行
[root@demo ~]# ansible-playbook playbook_nginx.yml

Python在运维工作中的经典应用之ansible的更多相关文章

  1. Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)

    一 Ansible自动化运维工具 Python 在运维工作中的经典应用 ansible(批量管理操作) .安装ansible(需要bese epel 2种源) wget -O /etc/yum.rep ...

  2. 运维工作中常用到的几个rsync同步命令

    作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync. 下面结合本人近几年运维工作中对这一 ...

  3. 运维工作中sed常规操作命令梳理

    sed是一个流编辑器(stream editor),一个非交互式的行编辑器.它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间",接着用sed命令处理缓冲 ...

  4. Linux运维工作中需要掌握的知识

    说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具.我就大概列出这几方面,这样入门就基本没问题了.linux系统如果是学习可以选用redhat或centos,特别是cent ...

  5. 七年老运维实战中的 Shell 开发经验总结【转】

    无论是系统运维,还是应用运维,均可分为“纯手工”—> “脚本化”—> “自动化”—>“智能化”几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避 ...

  6. Python 开发个人微信号在运维开发中的使用

    一.主题:Python 开发个人微信号在运维开发中的使用 二.内容: 企业公众号 介绍开发微信公众号的后台逻辑,包括服务器验证逻辑.用户认证逻辑 个人微信号 面对企业微信的种种限制,可以使用 Itch ...

  7. 面试 Linux 运维工作至少需要知道哪些知识?

    前言 我们已经发过不少 Linux 面试题,但是单独的面试题总感觉会过于零碎,没有体系化内容给人的帮助大. 知乎上有这样一个问题:一个新手面试 Linux 运维工作至少需要知道哪些知识?其中有一个答案 ...

  8. python常用运维脚本实例

    转载  file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件 ...

  9. 转:python常用运维脚本实例

    python常用运维脚本实例 转载  file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函 ...

随机推荐

  1. matlab使用的心得

    保存变量到一个文件,可以是部分变量或者全部变量save('back.mat','a'):%把a变量保存在文件中 加载文件中的变量可以是部分或者全部变量load('matlab.mat','a') 向字 ...

  2. Differential Geometry之第七章曲面的若干整体性质

    1.曲面的整体描述 2.整体的Gauss-Bonnet公式 2.1.曲面的三角剖分 2.2.Gauss-Bonnet公式 = 2.3.Gauss-Bonnet定理的应用 2.3.1.切向量场的指数定理 ...

  3. android之SQLite数据库insert操作

    原型: long Android.database.sqlite.SQLiteDatabase.insert(String table, String nullColumnHack, ContentV ...

  4. 那么类 Man 可以从类 Human 派生,类 Boy 可以从类 Man 派生

    若在逻辑上 B 是 A 的“一种”(a kind of ),则允许 B 继承 A 的功 能和属性. 例如男人(Man)是人(Human)的一种,男孩(Boy)是男人的一种. 那么类 Man 可以从类 ...

  5. gomobile build

    You need to set the NDK path in gomobile init using the -ndk flag - if you follow these instructions ...

  6. 《算法导论》— Chapter 12 二叉查找树

    序 查找树是一种数据结构,它支持多种动态集合操作.包含Search.Minimum.Maximum.PreDecessor.Successor.Insert.Delete等.它既能够用作字典,也能够用 ...

  7. LoadRunner中winsocket协议学习

    首先让我们先看一下loadrunner- winsock 函数 一览表:        lrs_accept_connection 接受侦听套接字连接 lrs_close_socket 关闭打开的套接 ...

  8. shell 中各种符号的含义

    http://yesjavame.iteye.com/blog/1062405 http://blog.csdn.net/taiyang1987912/article/details/39551385

  9. iOS 功能代码 上传到 远程 码云私有库

    推送代码到远程私有库 创建私有库(注意:仓库名称LYDKit必须和本地仓库对应的名称一样) 复制远程仓库的地址,打开终端,cd到对应的本地库路径下面 >>> cd /Users/cx ...

  10. Leetcode: Merge/Insert Interval

    题目 Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[ ...