首页 > 其他分享 >第八章 Ansible-playbook基础介绍

第八章 Ansible-playbook基础介绍

时间:2022-09-20 09:57:53浏览次数:64  
标签:www group name rsync 第八章 state Ansible playbook root

一、playbook简介

PlayBook即"剧本","兵书"之意,PlayBook是由以下部分组成的:

play(host): 定义的是主机的角色。(主角还是配角)
Book(task): 定义的是具体执行的任务。(角色的台词和动作)
playbook: 由一个或多个play(角色)组成,一个play(角色)可以包含多个task(台词,动作)。

简单理解为: 对不同的主机使用很多不同的模块做很多工作完成一件事情

在Ansible中"剧本文件"是以yml结尾的文件。
在SaltStack中"剧本文件"是以sls结尾的文件。
但是语法,使用的都是yaml语法

二、playbook的组成

[root@m01 ~]# vim touch.yml
#指定执行动作的主机组
- hosts: web_group
#指定远端操作的用户
  remote_user: root
#开始定义变量
  vars:
    file_name: lhd
#指定动作
  tasks:
#注释:说明这个动作
    - name: 创建文件
#指定shell模块创建一个文件
      shell: touch /tmp/{{ file_name }}

#执行前检查语法
[root@m01 ~]# ansible-playbook --syntax-check touch.yml 
playbook: touch.yml
#该命令,只能检查语法,无法验证逻辑

三、PlayBook与ad-hoc

特点 PlayBook ad-hoc
完整性
持久性
执行效率
变量 支持 不支持
耦合度
1.PlayBook功能比ad-hoc更全,是对ad-hoc的一种编排.
2.PlayBook能很好的控制先后执行顺序, 以及依赖关系.
3.PlayBook语法展现更加的直观.
4.playbook可以持久使用,ad-hoc无法持久使用.

四、playbook中yaml语法

语法 描述
缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用TAB
冒号 以冒号结尾的除外,其他所有冒号后面所有必须有空格
短横线 表示列表项,使用一个短横杠加一个空格,多个项使用同样的缩进级别作为同一列表
中国:
  北京:
  上海:
    - 日本
    - 浦东新区
    - 青浦区

五、playbook实战-部署httpd

1.配置主机清单

[root@m01 ~]# vim /etc/ansible/hosts 
[web_group]
web01 ansible_ssh_pass='1'
web02 ansible_ssh_pass='1'
web03 ansible_ssh_pass='1'

[root@m01 ~]# vim /etc/hosts
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03

2.测试连接

[root@m01 ~]# ansible web_group -m ping

3.编写剧本

[root@m01 ~]# cat httpd.yml 
- hosts: web_group
  tasks:
    - name: Stop Selinux
      selinux:
        state: disabled

    - name: Stop Firewalld
      systemd:
        name: firewalld
        state: stopped

    - name: Install Httpd
      yum:
        name: httpd
        state: present

    - name: Start Httpd Server
      systemd:
        name: httpd
        state: started

    - name: Config Httpd Index
      copy:
        content: test ansible install httpd
        dest: /var/www/html/index.html

六、编写搭建交作业页面剧本

1.编写剧本

[root@m01 ~]# cat zuoye.yml 
- hosts: all
  tasks:
    - name: Add www group
      group:
        name: www
        gid: 666

    - name: Add www User
      user:
        name: www
        uid: 666
        group: www

- hosts: web_group
  tasks:
    - name: Install Httpd Server
      yum:
        name: httpd
        state: present

    - name: Mkdir Package
      file:
        path: /package
        state: directory

    - name: Tar php.tar.gz
      unarchive:
        src: /root/php.tar.gz
        dest: /package/

    - name: Install PHP Server
      shell: yum localinstall -y /package/*.rpm

    - name: Tar kaoshi.zip
      unarchive:
        src: /root/kaoshi.zip
        dest: /var/www/html
        owner: www
        group: www

    - name: Mkdir upload
      file:
        path: /var/www/html/upload
        state: directory
        owner: www
        group: www

    - name: Config Httpd Server
      copy:
        src: /root/httpd.conf
        dest: /etc/httpd/conf/
     
    - name: Start Httpd Server
      systemd:
        name: httpd
        state: restarted
        enabled: yes

- hosts: nfs_group
  tasks:
    - name: Install nfs Server
      yum:
        name: nfs-utils
        state: present

    - name: Config nfs Server
      copy:
        content: /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
        dest: /etc/exports

    - name: Mkdir data
      file:
        path: /data
        state: directory
        owner: www
        group: www

    - name: Start nfs Server
      systemd:
        name: nfs
        state: restarted
        enabled: yes

- hosts: web_group
  tasks:
    - name: Mount nfs
      mount:
        src: 172.16.1.31:/data
        path: /var/www/html/upload
        fstype: nfs
        opts: defaults
        state: mounted

2.测试语法

[root@m01 ~]# ansible-playbook --syntax-check zuoye.yml 

playbook: zuoye.yml

3.运行剧本

[root@m01 ~]# ansible-playbook zuoye.yml

七、配置rsync备份

1.创建项目目录

[root@m01 ~]# mkdir /project/rsync

2.部署准备

[root@m01 ~]# vim /etc/ansible/hosts 
[web_group]
web01 ansible_ssh_pass='1'
web02 ansible_ssh_pass='1'
web03 ansible_ssh_pass='1'
[nfs_group]
nfs ansible_ssh_pass='1'
[backup_server]
backup ansible_ssh_pass='1'

2)准备rsync配置文件

[root@m01 ~]# vim /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

3)上传安装包

1.上传sersync包

4)准备sersync配置文件

[root@m01 ~]# vim GNU-Linux-x86/confxml.xml
	<sersync>
        <localpath watch="/data">
            <remote ip="172.16.1.41" name="backup"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pass"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="false" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>
        
[root@m01 ~]# cp GNU-Linux-x86/confxml.xml ./

3.编写剧本

[root@m01 ~]# cat rsync.yml 
- hosts: backup_server
  tasks:
    - name: Install rsync Server
      yum:
        name: rsync
        state: present

    - name: Config rsync Server
      copy:
        src: /etc/rsyncd.conf
        dest: /etc/

    - name: Config Password File 
      copy:
        content: rsync_backup:123456
        dest: /etc/rsync.passwd
        mode: 0600

    - name: Mkdir backup
      file:
        path: /backup
        state: directory
        owner: www
        group: www

    - name: Start Rsyncd Server
      systemd:
        name: rsyncd
        state: restarted

- hosts: nfs_group
  tasks:
    - name: Install rsync Server
      yum:
        name: rsync
        state: present

    - name: Install rsync Server
      yum: 
        name: inotify-tools
        state: present

    - name: Install sersync
      copy:
        src: /root/sersync
        dest: /usr/local/
        mode: 0755

    - name: Config sersync Server
      copy:
        src: /root/confxml.xml
        dest: /usr/local/sersync/

    - name: Touch Client Password File
      copy:
        content: 123456
        dest: /etc/rsync.pass
        mode: 0600

    - name: Start sersync Server
      shell: /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
      #script: /root/start_sersync.sh

标签:www,group,name,rsync,第八章,state,Ansible,playbook,root
From: https://www.cnblogs.com/GAO321/p/16709983.html

相关文章

  • 第三章 Ansible中ad-hoc入门
    一、概述Ansibleadhoc命令使用/usr/bin/ansible命令行工具在一个或多个受管节点上自动执行单个任务。临时命令既快速又简单,但它们不可重复使用,执行完即结束,并不会保存......
  • 第二章 Ansible服务搭建
    一、环境准备主机名IP身份m0110.0.0.61Ansible控制端web01172.16.1.7Ansible被控端web03172.16.1.9Ansible被控端二、安装Ansible[root@m0......
  • 第一章 Ansible入门
    一、Ansible概述、Ansible是一种IT自动化工具。它可以配置系统、部署软件并协调更高级的IT任务,例如持续部署或零停机滚动更新。Ansible的主要目标是简单易用。它......
  • 第八章 Redis数据持久化之AOF
    一、AOF概述AOF(Append-OnlyFile)记录Redis中每次的写命令,类似mysql中的binlog,服务重启时会重新执行AOF中的命令将数据恢复到内存中,RDB(按策略持久化)持久化方式记录的粒......
  • 12.ansible lineinfile模块
    前言:lineinfile模块,功能有点类似sed常用功能:对文件的行替换、插入、删除PS:替换/插入:如果有重复的,都是匹配最后一个,如果不加backrefs项,替换/插入如无匹配者,则将line......
  • 本次介绍如何利用ansible一键初始化centos7
    本次介绍如何利用ansible一键初始化centos7。本文介绍的运行环境是CentOS7.6:[root@localhost~]#cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)[r......
  • SQLServer第八章:事务 transaction
    事务:是一种机制,独立的工作单元,保证结果只产生成功或失败特性(ACID): 原子性:要么成功,要么失败 一致性:操作前后表中数据是一致的 隔离性:当前事务操作的数据,对......
  • ansible 常用命令
    ansible使用笔记命令 列出可用模块# ansible-doc -l显示模块使用ansible-doc –s cron # 显示模块使用ansible-doc cron    # 详细显示ansible-......
  • ansible使用介绍
    ansible基础语法ansible通过ssh实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于密钥认证的方式联系各被管理节点ansible<host-pattern>[-mmodule_n......
  • rh358 005 dhcp dhcp6 打印机 ansible配置dhcp和打印机
    部署dhcp服务器主机发送Discover报文目标为广播地址同一网段的dhcp收到报文后,dhcp响应一个offer报文offer报文:dhcp自己的ip地址。和客户端ip以及使用周期,和客户端ip网......