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 ...
随机推荐
- idea 警告:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
在pom.xml文件中添加 <properties> <maven.compiler.source>1.8</maven.compiler.source& ...
- [剑指offer] 34. 第一个只出现一次的字符
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 一次遍历存储到哈希表 一次 ...
- [剑指offer] 1. 二维数组中的的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- [PTA] 数据结构与算法题目集 6-2 顺序表操作集
//创建并返回一个空的线性表: List MakeEmpty() { List L; L = (List)malloc(sizeof(struct LNode)); L->Last = -1; ...
- ssm框架下的文件上传和文件下载
最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下. 1.在自己已经构建好的maven web项目中 pom. ...
- 【iOS】创建真机调试证书
今天第一次完整的在一个开发者账号里添加证书,刚接触,还真有些不熟悉,还好找到了一篇不错的文章:iOS开发:创建真机调试证书 ,做了很详细的介绍. 分享一下!!
- How to check all timestamps of a file
A friend of mine she asked me how to check all timestamps of a file on an NTFS volume. She did not h ...
- kubernetes lowB安装方式
kubernetes离线安装包,仅需三步 基础环境 关闭防火墙 selinux $ systemctl stop firewalld && systemctl disable fire ...
- 神奇的 SQL 之子查询,细节满满 !
前言 开心一刻 有一天,麻雀遇见一只乌鸦. 麻雀问:你是啥子鸟哟 ? 乌鸦说:我是凤凰. 麻雀说:哪有你龟儿子这么黢黑的凤凰 ? 乌鸦说:你懂个铲铲,老子是烧锅炉的凤凰. 子查询 讲子查询之前,我们先 ...
- HBase MapReduce 一些 ClassNotFoundException 所缺少的jar包
我们在用 java 操作 HBase 时,可能会出现相关的 ClassNotFoundException 等异常信息,但是我们又不想把 HBase lib 下的所有jar包全部导入到工程,因为会有 ...