Ansible-playbook 基本语法与实例(学习笔记十九)

简介: 1、安装apache,做初始配置,并启动服务:这个是你选择的主机hosts: webservers这个是变量vars:http_port: 80max_clients: 200远端的执行权限remote_user: roott...

1、安装apache,做初始配置,并启动服务:

这个是你选择的主机

  • hosts: webservers

这个是变量

vars:

http_port: 80

max_clients: 200

远端的执行权限

remote_user: root

tasks:

利用yum模块来操作

  • name: ensure apache is at the latest version

    yum: pkg=httpd state=latest

  • name: write the apache config file

    template: src=/srv/httpd.j2 dest=/etc/httpd.conf

触发重启服务器

notify:

- restart apache
  • name: ensure apache is running

    service: name=httpd state=started

这里的restart apache 和上面的触发是配对的。这就是handlers的作用。相当于tag

handlers:

- name: restart apache

  service: name=httpd state=restarted

2、可以同时使用10个进程进行,调用格式为:
ansible-playbook test.yml -f 10

3、对于没有把握执行的任务,需要加上 ignore_errors: True,这样即使出错,下一个任务也会继续执行

4、ansible-playbook可以根据上一个任务的执行结果,来判断执行下一个任务,系统参数为when:
tasks:

  • shell: /usr/bin/foo

    register: foo_result

    ignore_errors: True

  • name: "cmd"

    action: command touch /root/kkkkk

    when: foo_result.rc == 127

5、根据操作系统类型,执行不同安装:

  • hosts: all
    remote_user: root
    gather_facts:True
    tasks:
  • name: install apache on CentOS
    yum: name=httpd state=present
    when: ansible_os_family =="CentOS"
  • name: install apache on Debian
    yum: name=apache2 state=present
    when: ansible_os_family =="Debian"

6、notify和handlers来执行触发,handlers可多次调用:

  • name: template configuration file
    template: src=template.j2 dest=/etc/foo.conf
    notify:
    • restart memcached
    • restart apache
      handlers:
    • name: restart memcached
      service: name=memcached state=restarted
    • name: restart apache
      service: name=apache state=restarted

7、执行多个变量,每个变量为一次任务:
tasks:

  • name: panduan
    command: echo {{ item }}
    with_items: [ 0,2,4,6,8,10 ]

8、特定任务用特定用户执行:

  • hosts: webnodes
    remote_user: mageedu
    tasks:
    • name: test connection
      ping:
      remote_user: mageedu
      sudo: yes

9、捕获执行中的错误,并进行补救:
tasks:

  • block:
    • name: Create {{ maildir_path }}
      copy:
      src: "{{ maildir }}"
      dest: "{{ maildir_path }}"
      mode: 0755
      register: command_output
      rescue:
    • name: Install mail packages
      yum:
      name: "{{ item }}"
      state: latest
      with_items:
      • "{{ mail_package }}"
      • dovecot
        always:
    • name: start the mail service
      service:
      name: "{{ mail_service }}"
      state: restarted

10、对任务做tag标记,可以只执行某个tag,执行语法为:ansible-playbook -t TAGS_NAME playbook.yaml

  • hosts: all #所有远程主机
    remote_user: root #以远程主机上root用户执行
    tasks: #任务
    • name: install redis #任务之安装
      yum: name=redis state=latest #动作调用yum模块安装
    • name: copy config file #任务之复制同步配置文件到远程目标主机
      copy: src=/root/playbooks/redis.conf dest=/etc/redis.conf owner=redis #动作copy模块执行
      notify: restart redis #触发的动作
      tags: configfile #任务标记名configfile

11、从外部传入变量,ansible-playbook的格式为:ansible-playbook tomcat-install.yml --extra-vars "{'host':'192.168.11.111', 'tomcat_home':'/opt/tomcat-test', 'url':'http://www.apache.com/tomcat-7.0.57.tar.gz'}"


  • name: Tomcat install and configuration

    hosts: "{{ host }}"

    user: root

vars:

tomcat_home: "{{ tomcat_home }}" 

tasks:

- name: absent old tomcat

  file: path={{ item }} state=absent

  with_items:

    - "{{ tomcat_home }}"

    - /geelyapp/auto_scripts/tomcat.sh

- name: get tomcat_tar_gz

  get_url: url={{ url }} dest=/tmp/tomcat.tar.gz

- name: Create the dir

  file: path={{ item }} state=directory

  with_items:

    - /geelyapp/gc_log

    - /geelyapp/auto_scripts

    - "{{ tomcat_home }}"
目录
相关文章
|
开发框架 运维 应用服务中间件
EDAS(Enterprise Distributed Application Service)
EDAS(Enterprise Distributed Application Service)是阿里云提供的一款企业级分布式应用服务平台,帮助企业快速构建、部署和管理分布式应用程序。EDAS提供了一系列的功能和工具,包括微服务架构、容器化部署、服务治理、流量控制、故障诊断等,可以帮助企业实现分布式应用的快速迭代和运维管理。
1585 0
|
存储 监控 安全
Zabbix SNMP监控安装、配置与服务器实例(学习笔记六)
SNMP可以监控路由器、打印机、UPS、摄像头、服务器等。 1、安装、配置snmp  yum install net-snmp* -y # vim /etc/snmp/snmpd.
3420 0
|
运维 安全
阿里云无影在泰国正式开服
客户可以就近接入,使用无影云电脑快速构建强安全、免运维、轻资产的云上办公体系。
874 0
阿里云无影在泰国正式开服
|
分布式计算 关系型数据库 MySQL
【企业数据中台交付】数据回刷实验
通过自定义sql(多路输出、动态分区、笛卡尔积)和补数据方式,回刷历史分区数据,使业务可查看历史数据。
|
前端开发 JavaScript
案例挑战——MVVM框架理解和实践
案例挑战——MVVM框架理解和实践
702 0
|
算法 安全 数据安全/隐私保护
聊聊 A5/1 算法
A5 算法在 1989 年由法国人开发,先后开发了三个版本记作 A5/1、A5/2、A5/3,如果没有特别说明,通常所说的 A5 是指 A5/1,这是一种流密码加密算法。该算法用于 GSM 系统的序列密码算法,最初是保密的,但通过泄漏和逆向工程公开。
聊聊 A5/1 算法
|
Java 应用服务中间件 开发工具
IntelliJ IDEA 开发Web应用图文教程
本文目录 1. 简介 2. 软件下载与安装 3. 创建Project 4. 创建Module 5. 项目目结构设置 6. 配置Tomcat服务器 7. 部署web应用并运行
895 0
IntelliJ IDEA 开发Web应用图文教程
|
算法 Java 数据库
2018最新蚂蚁金服面试题:Docker+秒杀设计+RocketMQ+亿级数据设计
一面: 1 自我介绍 2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机。
10107 10
|
SQL 分布式计算 Linux
MaxCompute - ODPS重装上阵 第七弹 - Grouping Set, Cube and Rollup
MaxCompute中的GROUPING SETS功能是SELECT语句中GROUP BY子句的扩展。允许采用多种方式对结果分组,而不必使用多个SELECT语句来实现这一目的。这样能够使MaxCompute的引擎给出更有的执行计划,从而提高执行性能。
7906 0
MaxCompute - ODPS重装上阵 第七弹 - Grouping Set, Cube and Rollup
|
分布式计算 监控 Oracle
基于OGG Datahub插件将Oracle数据同步上云
一、背景介绍 随着数据规模的不断扩大,传统的RDBMS难以满足OLAP的需求,本文将介绍如何将Oracle的数据实时同步到阿里云的大数据处理平台当中,并利用大数据工具对数据进行分析。 OGG(Oracle GoldenGate)是一个基于日志的结构化数据备份工具,一般用于Oracle数据
9361 1