ansible-2

简介: ansible-2

ansible playbook:剧本

   由一个或多个模块组成,完成统一的目的,实现自动化操作

   剧本编写遵循yaml语法

   yaml的三要素:***

缩进:两个字符,默认的tab键是四个字符,所以要使用tab键,需要修改.vimrc

              vim /root/.vimrc

               添加:

               set tabstop=2

               保存退出

           

       冒号:冒号后面需要空格,除非以冒号结尾

       短横杠:列表项,后面跟空格

playbook语法结构

   ansible-playbook 选项 文件路径

   选项:

               -C  模拟预运行

               --list-hosts:列出清单

               --list-tasks:列出任务

               --list-tags:列出标签

               --syntax-check:语法检查

     


测试案例:通过playbook安装httpd,并修改端口号为8080

前提:安装httpd,复制httpd.conf到当前目录,修改端口为8080

vim httpd.yaml

添加:

- hosts: web
  tasks:
    - name: install httpd
      yum: name=httpd state=latest
    - name: httpd config
      copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf
      notify: restart httpd
    - name: start httpd
      service: name=httpd state=started
  handlers:
    - name: restart httpd
      service: name=httpd state=restarted
保存退出
测试yaml: ansible-playbook -C httpd.yaml
执行yaml:ansible-playbook httpd.yaml


#####################################################################

playbook配置web--nfs--rsync架构环境

全局环境:修改各主机名:ansible、web、nfs、rsync

1.服务器配置

前提:

ifdown ens33;ifup ens33

systemctl stop firewalld

systemctl disable firewalld

setenforce 0


vim  /etc/hosts

192.168.8.10   ansible

192.168.8.20   web

192.168.8.30   nfs

192.168.8.40   rsync

保存退出


(1)安装ansible

   yum -y install epel-release

   yum -y install ansible

(2)ssh公钥

   ssh-keygen -t rsa

   ssh-copy-id root@web        #web服务器

   ssh-copy-id root@nfs        #nfs服务器

   ssh-copy-id root@rsync        #rsync服务器

(3)复制/etc/hosts到被管理端

   scp /etc/hosts root@web:/etc/

   scp /etc/hosts root@nfs:/etc/

   scp /etc/hosts root@rsync:/etc/

(4)创建ansible目录

   mkdir -p /etc/ansible/ansible_playbook/{conf,file,scripts,tools}

(5)创建ansible清单

vim /etc/ansible/hosts

添加:

[web]

192.168.8.20

 

[nfs]

192.168.8.30

 

[rsync]

192.168.8.40

 

保存退出


(6)使用ansible copy 复制/etc/hosts到所有主机

ansible all -m copy -a "src=/etc/hosts dest=/etc"



2.基础环境部署


(1)网络环境(关闭firewall  selinux)

(2)epel仓库

(3)安装rsync,nfs-utils

(4)创建组

(5)创建用户

(6)创建目录,并修改权限

(7)推送脚本

(8)推送rsync客户端密码文件,修改权限

(9)计划任务

vim /etc/ansible/ansible_playbook/base.yaml

添加:

- hosts: all
  tasks:
    - name: stop firewalld
      shell: systemctl stop firewalld
    - name: stop selinux 
      shell: setenforce 0 
    - name: clear repos.d
      file: path=/etc/yum.repos.d/ state=absent
    - name: create repos.d
      file: path=/etc/yum.repos.d/ state=directory
    - name: install base repo
      get_url: url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/etc/yum.repos.d/CentOS-Base.repo
    - name: install epel repo
      get_url: url=http://mirrors.aliyun.com/repo/epel-7.repo dest=/etc/yum.repos.d/epel.repo
    - name: install rsync nfs-utils
      yum: name=rsync,nfs-utils state=installed
    - name: create group www
      group: name=www gid=666
    - name: create user www
      user: name=www uid=666 create_home=no shell=/sbin/nologin
    - name: create rsync client password
      copy: content='1' dest=/etc/rsync.pass mode=600
    - name: create scripts directory
      file: path=/server/scripts/ recurse=yes state=directory
    - name: push scripts
      copy: src=./scripts/rsync_backup.sh dest=/server/scripts
    - name: crontab
      cron: name="backup scripts" hour=01 minute=00 job="/usr/bin/bash /server/scripts/rsync_backup.sh &> /dev/null"
保存退出


3.rsync配置


(1)安装rsync

(2)配置

(3)启动

(4)脚本

(5)计划任务

vim /etc/ansible/ansible_playbook/rsync.yaml

添加:

- hosts: rsync
  tasks:
    - name: install rsync
      yum: name=rsync state=installed
    - name: config rsync
      copy: src=/etc/ansible/ansible_playbook/conf/rsyncd.conf dest=/etc/rsyncd.conf
      notify: restart rsync
    - name: create rsync local user
      copy: content='rsync_backup:1' dest=/etc/rsync.password mode=600
    - name: create data
      file: path=/data state=directory recurse=yes owner=www group=www mode=755
    - name: create backup
      file: path=/backup state=directory recurse=yes owner=www group=www mode=755
    - name: start rsync
      service: name=rsyncd state=started enabled=yes
    - name: push check scripts
      copy: src=./scripts/rsync_check.sh dest=/server/scripts
    - name: crond check scripts
      cron: name="check scripts" hour=05 minute=00 job="/usr/bin/bash /server/scripts/rsync_check.sh &> /dev/null"
  handlers:
    - name: restart rsync
      service: name=rsyncd state=restarted

保存退出


4.nfs部署


(1)安装nfs-utils

(2)配置

(3)启动

vim /etc/ansible/ansible_playbook/nfs.yaml

添加:

- hosts: nfs
  tasks:
    - name: install nfs
      yum: name=nfs-utils,rpcbind state=installed
    - name: config nfs
      copy: src=./conf/exports dest=/etc/exports
      notify: restart nfs
    - name: create data
      file: path=/data state=directory recurse=yes owner=www group=www mode=755
    - name: start nfs
      service: name=nfs-server state=started enabled=yes
  handlers:
    - name: restart nfs
      service: name=nfs-server state=restarted

保存退出


5.sersync部署


(1)在ansible服务器先下载sersync

(2)解压到/etc/ansible/ansible_playbook/并修改配置文件

(3)推送到nfs

(4)启动sersync

vim /etc/ansible/ansible_playbook/sersync.yaml

添加:

- hosts: nfs
  tasks:
    - name: scp sersync
      copy: src=./tools/sersync/ dest=/usr/local/sersync owner=www group=www mode=755
    - name: start sersync
      shell: pgrep sersync;
              [ $? -eq 0 ] || /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml

保存退出


6.web部署


(1)本地安装httpd

(2)修改配置文件,复制到/etc/ansible/ansible_playbook/conf

(3)挂载

(4)启动

vim /etc/ansible/ansible_playbook/web.yaml

添加:

- hosts: web
  tasks:      
    - name: install httpd
      yum: name=httpd state=installed
    - name: mount nfs
      mount: src=nfs:/data path=/var/www/html fstype=nfs state=mounted      
    - name: config httpd
      copy: src=./conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
      notify: restart httpd
    - name: start httpd
      service: name=httpd state=started enabled=yes
  handlers:
    - name: restart httpd
      service: name=httpd state=restarted

保存退出


7.main.yaml

vim main.yaml

添加:

- import_playbook: base.yaml
- import_playbook: rsync.yaml
- import_playbook: nfs.yaml
- import_playbook: sersync.yaml
- import_playbook: web.yaml

保存退出


预检测:ansible-playbook -C main.yaml

执行:  ansible-playbook main.yaml                        



------------------------------------

ansible roles扩展参考:

https://blog.csdn.net/woshizhangliang999/article/details/106005990/


相关文章
|
11月前
|
关系型数据库 MySQL PHP
ansible汇总(3)
roles介绍 roles(角色): 就是通过分别将variables, tasks及handlers等放置于单独的目录中,并可以便捷地调用它们的一种机制。
54 1
|
11月前
|
运维 Shell Linux
ansible汇总(1)
公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入自动化运维工具, 对多台服务器实现高效运维。
109 0
|
11月前
|
Kubernetes Docker 容器
ansible汇总(2)
playbook(剧本): 是ansible用于配置,部署,和管理被控节点的剧本。用于ansible操作的编排。 参考:https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html 使用的格式为yaml格式(saltstack,elk,docker,docker-compose,kubernetes等也都会用到yaml格式)
52 0
|
运维 网络安全 Python
ansible-1
ansible-1
56 0
|
存储 安全 Linux
ansible 初识
Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安全基线配置、更新和打补丁系统,安装软件包等。
108 1
|
运维 Shell 网络安全
ansible(1)
Ansible概述:是一个配置管理系统(configuration management system),当下最流行的批量自动化运维工具之一.
|
安全 Shell Linux
|
运维 网络安全 开发工具
ansible使用
ansible使用
206 0
|
存储 Ubuntu Shell
|
监控 Shell 网络安全
Ansible 常用
一.前言 在企业中运维工作人员通常需要同时管理几十台甚至几百台主机(虚拟机),如果需要批量修改设置或者做更新操作的话,即便是事先编写好脚本,一台一台的去运行脚本也是非常耗时的,效率也十分低下。
1262 0