Ansible实践总结
Ansible playbook 根据条件动态设置变量
首先新建 inventory,主机列表如下:
node-01 ansible_host=192.168.64.30
node-02 ansible_host=192.168.64.31 [app]
node-01 [db]
node-02
然后新建一个 test.yml,新增如下内容:
- hosts: db[0]:app[0] # 支持索引取值
vars:
- Role: "{{ 'db' if 'app' in group_names else 'app' }}" # 动态设置变量
- Ports:
app: 4503
db: 4502 pre_tasks: # 默认tasks只能在roles执行完后才执行,而pre-tasks可以在roles之前执行
- name: Debug
debug:
msg: This is a test message. roles:
- testrole
新建 roles/testrole/defaults/main.yml
---
RESTLink: 'http://{{ inventory_hostname }}:{{ Ports[Role] }}'
新建 roles/testrole/tasks/main.yml
---
- debug:
msg: "Final URL is {{ RESTLink }}"
执行该 playbook
ansible-playbook -i inventory test.yml
输出结果是:
PLAY [db[0]:app[0]] ******************************************************************************************************************************************* TASK [Gathering Facts] ****************************************************************************************************************************************
Tuesday 27 August 2019 18:22:30 +0800 (0:00:00.121) 0:00:00.121 ********
ok: [node-01]
ok: [node-02] TASK [debug] **************************************************************************************************************************************************
Tuesday 27 August 2019 18:22:32 +0800 (0:00:02.242) 0:00:02.363 ********
ok: [node-02] => {
"msg": "This is a test message."
}
ok: [node-01] => {
"msg": "This is a test message."
} TASK [testrole : Debug] ***************************************************************************************************************************************
Tuesday 27 August 2019 18:22:33 +0800 (0:00:00.255) 0:00:02.620 ********
ok: [node-02] => {
"msg": "Final URL is http://node-02:4503"
}
ok: [node-01] => {
"msg": "Final URL is http://node-01:4502"
} PLAY RECAP ****************************************************************************************************************************************************
node-01 : ok=3 changed=0 unreachable=0 failed=0
node-02 : ok=3 changed=0 unreachable=0 failed=0
总结:
1. When used in this manner, the order of execution for your playbook is as follows:
- Any
pre_tasksdefined in the play. - Any handlers triggered so far will be run.
- Each role listed in
roleswill execute in turn. Any role dependencies defined in the rolesmeta/main.ymlwill be run first, subject to tag filtering and conditionals. - Any
tasksdefined in the play. - Any handlers triggered so far will be run.
- Any
post_tasksdefined in the play. - Any handlers triggered so far will be run.
Ansible实践总结的更多相关文章
- Nebula Graph 的 Ansible 实践
本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow & 看大厂图数据库技术实践 背景 在 Nebula-Graph 的日常测试中,我们会经常在 ...
- ansible实践4- 管理配置文件
生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook mkdir -p /etc/ansible/nginx_c ...
- ansible实践3-playbook条件判断
--- - hosts: testhost user: root gather_facts: True tasks: - name: use when shell: t ...
- ansible实践2-拷贝文件或目录
ansible testhost -m copy -a "src=/etc/ansible dest=/tmp/ansibletest owner=root group=root mo ...
- ansible实践-1
不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook 支持sudo 有提供UI(浏览器图形化)www.ans ...
- ansible实践
ansible常用module ansible-doc -l List available modules -s Show playbook snippet for specified module( ...
- Ansible - 简介和应用自动化基础实践
installAnsible简介和应用自动化基础实践 一.引入: 1.1 如官方定义,Ansible is The simplest way to automate apps and IT infr ...
- 《Ansible自动化运维:技术与佳实践》第二章读书笔记
Ansible 安装与配置 本章主要讲的是 Ansible 安装与基本配置,主要包含以下内容: Ansible 环境准备 安装 Ansible 配置运行环境 Ansible 环境准备 从 GitHub ...
- ansible服务部署与使用
第1章 ssh+key实现基于密钥连接(ansible使用前提) 说明: ansible其功能实现基于SSH远程连接服务 使用ansible需要首先实现ssh密钥连接 1.1 部署ssh ...
随机推荐
- Android/AndroidStudio/idea使用教程之git使用(详细)(码云)
已经安装好了AndroidStudio,安装教程 本教程是作者自己摸索出来的,有不足之处还请大家海涵.多多拍砖,互相学习. 第一步:下载git,安装git客户端 直接百度git,下载git 安装g ...
- 查询表格——建立动态表格,使用ajax输入查询条件将后台数据查询出来以表格的形式展示出来
建立动态表格,使用ajax将前台查询条件传给后台,并将查询结果以表格的形式展示出来. 页面的展示效果如下图所示: 第一步:查询条件的部分: 代码如下: <div class="text ...
- 【HDOJ】2104 hide handkerchief
Problem Description The Children’s Day has passed for some days .Has you remembered something happen ...
- GitLab与Git的结合
作为一名刚入职的大数据初级开发工程师,来到公司后发现代码是部署在GItLab上,之前一直认为代码可以放在码云.github上面,然后就很迷惑就对GitLab进行了了解,将git 和gitlab结合起来 ...
- 【JDK】JDK源码分析-LinkedList
概述 相较于 ArrayList,LinkedList 在平时使用少一些. LinkedList 内部是一个双向链表,并且实现了 List 接口和 Deque 接口,因此它也具有 List 的操作以及 ...
- git删除分支步骤
在本地删除一个分支: git branch -D <本地分支> 在github远程端删除一个分支: git push origin :<远程端分支> 唯一不同的就是冒号代表了删 ...
- Git/Github使用方法小记
今天把人间网的桌面客户端renjian-deck正式开源了,之前对javascript的了解其实非常的不够的,所以这一次的代码写的也是乱七八糟重用性及其低下,虽然我无数次的想把代码重新整理一下,不过还 ...
- Codeforces Round #192 (Div. 2) (329A)C.Purification
题意: 在一个正常的点可以净化该行该列的所有细胞,判断是否可以净化所有的细胞,并且输出所选的点. 思路: 如果可以的话,一定会选n个点. 先判断每一行是否有正常细胞,然后判断每一列是否有,如果都没有肯 ...
- WPF界面的异步后台加载
private void Init() { BackgroundWorker worker = new BackgroundWorker(); ...
- javascript基础案例解析
学完了JavaScript基础部分,总结出一些基本案例,以备日后查看! 1.九九乘法口诀表:在控制台中输出九九乘法口诀表!代码如下: <!DOCTYPE html> <html> ...