新浦京81707con > 软件下载 > 自动化运维之Ansible详解

原标题:自动化运维之Ansible详解

浏览次数:196 时间:2019-11-03

目录:

1.Ansible安装以致配备认证

(大器晚成)实验情形
(二)希图职业
(三)为node1和node2配置基础配置
(四)使用ansible部署nfs
(五)使用ansible部署corosync和pacemaker
(六)使用ansible安装crmsh工具
(七)使用crmsh配置http高可用
(八)验证
(九)必要静心的地点

ansible也是有Python开发的。

(黄金年代)实验情状
1.1、意况拓扑

ansible特点:

图片 1

无需设置客商端,通过sshd去通讯

选拔 Ansible 高效交付 Docker 容器  http://www.linuxidc.com/Linux/2015-10/124233.htm

基于模块职业,模块可以由别的语言开垦

行使Ansible批量管理远程服务器  http://www.linuxidc.com/Linux/2015-05/118080.htm

不仅援助命令行使用模块,也扶持编写yaml格式的playbook

Ansible安装配置与简便利用  http://www.linuxidc.com/Linux/2015-07/120399.htm

支持sudo

在 CentOS 7 中设置并行使自动化学工业具 Ansible  http://www.linuxidc.com/Linux/2015-10/123801.htm

又提供UI(浏览器图形化)www.ansible.com/tower 10台主机以内无需付费

Ansible和Docker的效应和用法  http://www.linuxidc.com/Linux/2014-11/109783.htm

开源UI

Ansible批量搭建LAMP情形 http://www.linuxidc.com/Linux/2014-10/108264.htm

文档 http://www.linuxidc.com/Linux/2017-03/142190.htm

1.2、所需系统
4台设置了CentOS6.5设想机

ansible安装:

1.3、互联网、主机及别的计划干活
长机IP地址和主机名

两台机械:

关门主机防火墙及Selinux
1.4、各主机用途表明
node1和node2:安装corosync pacemaker完结httpd的高可用

服务端:192.168.147.137

ansible-server:安装ansible,完结创新层面包车型地铁电动安排、安装、配置

客户端:192.168.147.138

nfs-server:安装了nfs,达成磁盘共享

在两台机械的/etc/hosts文件里步向:

(二)盘算事业
2.1、ansible-server安装ansible
1)、配置epel源

192.168.147.137 server

[epel]
name=epel
mirrorlist=
enabled=1
gpgcheck=0
备考:因为ansible所需的程序包在epel源有提供

192.168.147.138 client

2)、安装ansible

只须要在服务端上安装ansible就可以

[root@ansible-server ~]# yum -y install ansible
2.2、创造ansble-playbook所需选拔到的目录
[root@ansible-server ~]# mkdir -pv corosync/roles/{common,ha,crmsh,nfs}/{files,tasks,handlers,templates,vars,meta,default}
各目录简要表达

服务端:

common:用于一些主导的软件设置及布署,包含ntp时间同步,local源,挂载光盘等等

yum install -y epel-release

ha:用于安装corosync、httpd、pacemaker程序包,及布置corosync认证和安顿文件等

yum install -y ansible

crmsh:用于安装crmsh、pssh程序包

ansible配置密钥:

nfs:用于安装nfs、及运维nfs服务等
2.3、创建site.yml和ha.yml文件
[root@ansible-server ~]# touch corosync/ha.yml
[root@ansible-server ~]# touch corosync/site.yml 
备考:此文件虽可不配备,但此文件必得存在

服务端:

2.4、配置ansible下的hosts文件
[root@ansible-server ~]# vim /etc/ansible/hosts
[hbhosts]  #node1和node2的组
192.168.80.153
192.168.80.152
[nfs-Server]  #nfs-server组
192.168.80.168
2.5 、使用秘钥让两台主机互相像信
[root@ansible-server ~]# ssh-keygen -t rsa -P ''    #生成密钥串
[root@ansible-server ~]# ansible hbhosts -m copy -a 'src=/root/.ssh/id_rsa.pub dest=/root/.ssh/authorized_keys owner=root group=root mode=600' –k  #将秘钥串通过ansible拷贝到各节点中

变化秘钥对(暗中同意放在/root/.ssh/目录下,也能够自定义):

(三)为node1和node2配置基础配置
3.1、目标
挂载本地球磁性盘
备考:之后请在各节点上配置/etc/fstab,让其自行挂载。

ssh-keygen -t rsa

将装有的yum源移除

直接回车就能够,不用安装秘钥密码

布置本地yum源,并将其拷贝到各节点中

把公钥(id_rsa.pub)内容放到客商端(192.168.147.138)的/root/.ssh/authorized_keys里面:scp /root/.ssh/id_rsa.pub 192.168.147.138:/root/.ssh/authorized_keys

设置ntpdate和crontab,并动用布署职务设置时间一齐

也在服务端上的/root/.ssh/authorized_keys里面复制大器晚成份公钥,前边要用本机做二个客商端,即127.0.0.1:scp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys

拷贝本地拆解深入分析文件到各节点中的/etc/hosts中,让node1和node2可经过名称拆解剖析

客户端:

备注:以下操作均在ansible-server上操作
3.2、 配置hosts文件,用于节点间互为通讯
[root@ansible-server ~]# vim corosync/roles/common/files/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.152  node1.windchaser.com node1
192.168.80.153  node2.windchaser.com node2
用来贯彻node1和node2主机相互近信

变动文件权限:

3.3、设置本地光盘yum源
[root@ansible-server ~]# vim corosync/roles/common/files/local.repo
[local]
name=local repo
baseurl=file:///mnt
enabled=1
gpgcheck=0
3.4、定义common的tasks
目标:

chmod 600 /root/.ssh/authorized_keys

机动挂载光驱

关闭selinux:

移除全体暗中同意yum源,拷贝local.repo源至对应的目录

setenforce0

选择安顿职务设置时间自动同步
[root@ansible-server ~]# vim corosync/roles/common/tasks/main.yml

测量检验服务端连接客商端:

  • name: mount media        #活动挂载光盘
      mount: name=/mnt src=/dev/sr0 fstype=iso9660 opts=ro state=mounted
  • name: mkdir /tmp/repo
      shell: mkdir /tmp/repo
      args:
        creates: /tmp/repo
  • name: move *repo to /tmp
      shell: mv /etc/yum.repos.d/* /tmp/repo
  • name: copy local.repo to yum
      copy: src=local.repo dest=/etc/yum.repos.d/local.repo
  • name: yum ntpdate and crontab    #安装ntpdate 和 crontab
      yum: name={{ item }}  state=present
      with_items:
        - ntp
        - cronie
      tags: inst ntp
  • name: hosts file
      copy: src=hosts dest=/etc/hosts
  • name: sync time    #安装时间自动同步
      cron: name="sync time" minute="*/3" job="/usr/sbin/ntpdate ntp.api.bz &> /dev/null"
    3.5、定义YAML
    [root@ansible-server ~]# vim corosync/ha.yml
  • name: install and config corosync
      remote_user: root
      hosts: hbhosts
      roles:
        - common
    3.6、实行ansible-play自动布署基础配置
    [root@ansible-server ~]# ansible-playbook corosync/ha.yml
    那会儿会自行布置先前我们所做的操作,假若全部是OK状态,表示为健康,即使现身谬误,请检核对应的铺排项是还是不是出错。

ssh client

(四)使用ansible部署nfs
4.1、设定nfs-server分享目录
[root@ansible-server ~]# vim corosync/roles/nfs/files/exports
/web/htdocs  192.168.80.0/24(rw)
4.2、创立http默许访谈文件index.html,为后边做测验使用
[root@ansible-server ~]# vim corosync/roles/nfs/files/index.html
<h1>nfs-storage</h1>
4.3、定义nfs的tasks
[root@ansible-server ~]# vim corosync/roles/nfs/tasks/main.yml

后生可畏旦ssh命令一纸空文,安装一下:

  • name: install nfs
      yum: name=nfs-utils state=present
  • name: copy exports 
      copy: src=exports dest=/etc/exports
  • shell: mkdir /web/htdocs -pv
      args:
        creates: /web/htdocs
  • name: copy index.html
      copy: src=index.html dest=/web/htdocs
  • service: name=nfs state=started enabled=yes
      tags: start
    4.4、定义YAML
    [root@ansible-server ~]# vim corosync/ha.yml
  • name: install and config corosync
      remote_user: root
      hosts: hbhosts
      roles:
        - common
  • name: install nfs        #增加生产技艺上边那个项,目标是不会影响node1和node2
      remote_user: root
      hosts: nfs-Server
      roles:
        - nfs
    4.5、推行ansible-play自动安排nfs设置
    [root@ansible-server ~]# ansible-playbook corosync/ha.yml

yum insall -y openssh-clients

更多详细情形见请继续读书下黄金年代页的优异内容: http://www.linuxidc.com/Linux/2016-04/130844p2.htm

 

图片 2

2.ansible远程推行命令

服务端:

概念一个主机组:

vim /etc/ansible/hosts

累积一个主机组:

[testhost]

127.0.0.1

192.168.147.138

证实:testhost为主机组名字,自定义的。上面八个IP为组内的机械IP,也足以写主机名,前提是能解析为IP。

对这组主机推行w命令:

ansible testhost -m command -a 'w'

那样就足以批量实施命令了。这里的testhost为主机组名,-m前面是模块名字,-a前边是命令。当然大家也能够从来写八个IP,针对某大器晚成台机器来推行命令。

ansible 127.0.0.1 -m command -a 'hostname'

错误:“msg”:"Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"

解决:yum install -y libselinux-python

再有贰个模块正是shell相近也足以完成,扶持管道:

ansible testhost -m shell -a 'cat /etc/passwd | grep root'

shell功能比command功能多。

 

3.ansible拷贝索引只怕文件

ansible testhost -m copy -a "src=/etc/ansible dest=/tmp/ansibletest owner=root group=root mode=0755"

留意:源目录会放到目标目录上边去,假设目的内定的目录不设有,它会自动制造。借使拷贝的是文件,dest钦定的名字和源假设区别,而且它不是早就存在的目录,相当于拷贝过去后又重命名。但相反,如若dest是指标机器上曾经存在的目录,则会一贯把公文拷贝到该目录上面,比如:

ansible testhost -m copy -a "src=/etc/passwd dest=/tmp/123"

此地的/tmp/123和源机器上的/etc/passwd是后生可畏致的,但借使指标机器上生龙活虎度有/tmp/123目录,则会在/tmp/123/目录下创制passwd文件。

 

4.ansible远程试行脚本

首先创设三个shell脚本:

vim /tmp/test.sh

#!/bin/bash

echo `date` > /tmp/ansible_test.txt

然后把该脚本分发到各种机器上

ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

终极是批量实施该shell脚本

ansible testhost -m shell -a "/tmp/test.sh"

shell模块,还扶持远程实行命令何况带管道:

ansible testhost -m shell -a "cat /etc/passwd | wc -l"

 

5.ansible得以达成职务安顿

服务端:

创设八个职务计划:

ansible testhost -m cron -a "name='test cron' job='/bin/touch /tmp/1212.txt' weekday=6"

倘诺除去该cron只须要加二个字段state=absent

ansible testhost -m cron -a "name='test cron' state=absent"

其他的年月代表:

分:minute

时:hour

日:day

月:month

周:weekday

客户端:

翻看任务陈设:

crontab -l

 

6.ansible安装rpm包和管理服务

安装httpd:

ansible testhost -m yum -a "name=httpd"

在name后边还是能拉长state=installed,默许不加也得以设置

拉开httpd服务,并设为开机运维:

ansible testhost -m service -a "name=httpd state=started enabled=yes"

这里的name是CentOS系统里的劳动名,能够透过chkconfig --list查看。

ansible文书档案的应用:

ansible-doc -l 查看全体的模块

ansible-doc cron 查看钦定的模块

 

7.ansible playbook介绍

好像于shell脚本,约等于把命令写入到文件里,比方:

vim /etc/ansible/test.yml


- hosts: testhost

 remote_user: root

 tasks:

   - name: test_playbook

     shell: touch /tmp/test.txt

申明:hosts参数制定了对怎么主机举办操作;

user参数制订了选择什么客户登入远程主机操作;

tasks制订了二个职务,其下部的name参数相近是对任务的描述,在实行进程中会打字与印刷出来。

执行:ansible-playbook /etc/ansible/test.yml

再来一个创立客户的例子:

vim /etc/ansible/create_user.yml


- name: create_user

 hosts: testhost

 user: root

 gather_facts: false

 vars:

   - user: "test"

 tasks:

   - name: create user

     user: name="{{ user }}"

执行:ansible-playbook /etc/ansible/create_user.yml

证实:name参数对该playbook达成的功用做多个概述,后边实施进度中,会打字与印刷name变量的值,能够轻巧;gather_facts参数制订了在以下职责执行前,是还是不是先实践setup模块获取有关新闻,那在背后的task或利用到setup获取的新闻时用到;vars参数制订了变量,这里指二个user变量,其值为test,供给小心的是,变量值应当要引号括起来;user制订了调用user模块,name是user模块里的三个参数,而增加的顾客名字调用了位置user变量的值。

搜罗客商端的音信:

ansible client -m setup

 

8.ansible playbook循环

改过testhost组下主机的/tmp/目录下的1.txt,2.txt,3.txt(首先有限支撑这个文件存在)的权限改进为600,属主改为root,属组改为root:

编辑七个loop.yml脚本:

vim /etc/ansible/loop.yml


- hosts: testhost

 user: root

 tasks:

   - name: change mode for file

     file: path=/tmp/{{ item }} mode=600 owner=root group=root

     with_items:

      - 1.txt

      - 2.txt

      - 3.txt

执行:

ansible-playbook /etc/ansible/loop.yml

 

9.ansible playbook判断

当满意条件ansible_hostname == "client"时实践命令:

touch /tmp/when.txt:

编辑三个when.yml脚本:

vim /etc/ansible/when.yml


- hosts: testhost

 remote_user: root

 gather_facts: True

本文由新浦京81707con发布于软件下载,转载请注明出处:自动化运维之Ansible详解

关键词: 新浦京81707con

上一篇:澳门葡京网址一个web页面的访问的过程

下一篇:没有了