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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 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 }}"
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Shell 网络安全 开发工具
|
XML NoSQL 关系型数据库
实现 Ansible 企业级用法 playbook| 学习笔记
快速学习实现 Ansible 企业级用法 playbook
实现 Ansible 企业级用法 playbook| 学习笔记
|
关系型数据库 MySQL 应用服务中间件
|
Shell Linux Python
[Ansible专栏]Ansible条件判断的介绍和使用
[Ansible专栏]Ansible条件判断的介绍和使用
|
Shell 网络安全 Apache
ansible playbook剧本编写以及综合案例详解(十二)
ansible playbook剧本 1.Ad-Hoc简介 Ad-Hoc其实是一个概念性的名字,是相对于写ansible playbook来说的,类似于命令行敲入shell命令和写shell脚本两者之间的关系。 如果我们敲入一些目录去比较快的完成一些事情,而不需要将这些命令保存下来,这样的命令叫做ad-hoc命令,说白了就是ansible的模块。
717 0
ansible playbook剧本编写以及综合案例详解(十二)
|
缓存 运维 负载均衡
Ansible-playbook 的编写 | 学习笔记
快速学习Ansible-playbook 的编写
Ansible-playbook 的编写 | 学习笔记
|
NoSQL Shell 应用服务中间件
|
JSON Shell 数据格式
Ansible-playbook 变量进阶(学习笔记二十五)
1、register结果返回到变量中 - name: debug test one host   hosts: 200.200.6.53   tasks:     - debug:         msg: "System {{ inventory_h...
1407 0
|
Linux 开发工具 Python
Ansible-playbook 条件判断when、pause(学习笔记二十三)
有一些模块,例如copy这个模块有一些机制能跳过本次模块的运行.其实我们也可以使用自己的条件语句去配置跳过模块,这样方便你服务能够选择使用不同的包管理(apt,yum)和不同的文件系统.
1696 0
Ansible-playbook 应用变量(学习笔记二十)
文件 [root@ansible-server ansible]# tree ./ ./ ├── hosts └── var.yaml hosts 文件 [web] 192.
1127 0