iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >ansible--变量
  • 681
分享到

ansible--变量

2024-04-02 19:04:59 681人浏览 泡泡鱼
摘要

ansible中的变量主要来源于以下几种场景:Inventory(host vars,group vars)playbook里面命令行playbook执行task过程中产生结果,可以reGISter起来,作

ansible中的变量主要来源于以下几种场景:

  1. Inventory(host vars,group vars)

  2. playbook里面

  3. 命令行

  4. playbook执行task过程中产生结果,可以reGISter起来,作为变量给下面的task使用

  5. roles里面

  6. 来自于nodes上面的facts


其中1-4一般来说都是用户自己定义的,而5和facts则主要是ansible从nodes上面拉取过来,当然facts也可以自己定义。

Inventory里面的变量

/etc/ansible/hosts

[salt]

salt-master Http_port=80  ##主机变量

10.240.162.112 ansible_connection=paramiko


[salt:vars]  ##组变量

Mysql_port=3306

/etc/ansible/host_vars/salt-master  ##定义在文件里主机变量,文件名和主机名要一致

lxc:lixc

/etc/ansible/group_vars/salt  ##定义在文件里的组变量,文件名要和组名一致

lss:

  - liss

  - ansible


playbooks里面的变量

---

- hosts: all

  user: lixc

  vars:

    time: 120   ##变量

    port: 80

    keeplive: 100

  vars_files:

    - /vars/test.yml    ##也可以导入外部的文件里的变量

playbooks里面可以定义变量,也可以导入外部的文件里面的变量


命令行里面的变量

命令行,传递变量给playbooks大概有三种方式

第1种方式,比较简单了。

cat command_vars.yml

---

- hosts: salt-master

  remote_user: '`uservar`'  ##命令行变量

  tasks:

    - name: run this command and ignore the result

      shell: echo `echovar`

    - debug: msg='`result`.`stdout`'


ansible-playbook command_vars.yml -e "uservar=lixc echovar=hellomysql"  ##传入变量参数


第2种方式,以JSON的格式传递变量。

ansible-playbook command_vars.yml -e '{"uservar":"lixc", "echovar":"hellomysql"}'  

##变量形式较复杂的时候,用json格式较方便,一般的直接用第一种方式就可以了



第3种方式,传入json文件。第二种,第三种方法,一般用于变量形式较复杂的情况。不过,一般估计很少用,因为在命令行传变量本来就不多用吧,还是第一种命令行传递方式稍微常用点。

cat test.json    ##json文件

uservar: lixc

echocar: hellomysql


ansible-playbook command_vars.yml -e '@test.json'   ##用@加上json文件



第4种方式,register task的结果,作为变量,给下面的task使用

---

- hosts: slat-master

  tasks:

    - name: test

      command: ls /home

      register: result

    - debug: msg='`result`.`stdout`'




第五种方式,在roles里定义。

├── group_vars   ##全局组变量

│   └── salt

├── hosts

├── roles

│   ├── mysql

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── configure.yml

│   │   │   └── main.yml

│   │   ├── templates

│   │   │   └── my.cnf

│   │   └── vars          ##当前role变量

│   │        └── main.yml


第六种方方式,从nodes获取facts,facts和salt-stack里面的grains差不多,主要是nodes本身的一个系统信息,biOS信息,网络,硬盘等等信息。不过,facts比salt-stack中的grains获取的信息。要更多一些。

ansible slat-master -m setup|wc -l  ##查看facts

284

salt ‘*’ grains.items|wc -l       ##查看grains

65



自定义facts

自定义facts有多种方法,有能力的同学,可以直接去修改,setup这个模块。不过官方的东西,咱们还是不要随便改了。

第二种方法,定义在nodes上面,默认定义在/etc/ansible/fact.d/*fact里面。

定义文件的格式,大概三种,分别是ini格式,json格式,或者可执行文件,不过他们返回的必须是json格式。

lixc.fact

{"json":["hello","world"]}    ##这个文件内容是json格式


lss.fact

#!/usr/bin/env python   ##这个文件是Python脚本,返回json格式的字典

import json

dic = {"ansible_addresses": ["10.240.161.139","192.168.115.164"]}

print json.dumps(dic)


lxc.fact

[ini]      ##ini格式

lixc=hello

lss=world



在node上创建文件夹并把测试的fact文件传送过去。修改lss.fact这个文件的属性为其它组可执行的权限,否则待会执行不了,用-s参数试了下,也执行不了

ansible salt-master -a "mkdir -p /etc/ansible/fact.d" -s

for file in `ls `;do ansible salt-master -m copy -a "src=${file} dest=/etc/ansible/facts.d/" -s;done >/dev/null

ansible salt-master -m file -a "dest/etc/ansible/facts.d/lss.fact mode=755" > /dev/null -s

  ##上述有修改python脚本属性,待会要执行

ansible salt-master -m setup -a "filter=ansible_local"


自定义模块,只不过这个模块,返回一个facts格式的结果罢了。

在ansible的module里面,自定义一个文件夹,放自己的module,然后丢给自定义的module进去

mkdir /usr/share/ansible/custom

cat  chengge

#!/usr/bin/env python

import json

dic = {"ansible_facts": {'chengge': 'Hello ansible','liss': "Hello salt=stack"}}

print json.dumps{dic}

##字典的key要为ansible_facts,要不然playbooks里不能用facts了

cp chengge /usr/share/ansible/custom

ansible salt-master -m chengge


具体如何使用自定义模块:

其实,我们想用模块里返回的facts,那么显然,我们使用之前,肯定要先执行以下我们自定义的module

先看看playbooks

---

- hosts: slat-master

  tasks:

    - name: test custom module

      action: chengge           ##先执行下自定义module

    - debug: msg='`chengge`'  ##使用facts

再看看,执行结果

ansible--变量


您可能感兴趣的文档:

--结束END--

本文标题: ansible--变量

本文链接: https://www.lsjlt.com/news/46399.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ansible--变量
    ansible中的变量主要来源于以下几种场景:Inventory(host vars,group vars)playbook里面命令行playbook执行task过程中产生结果,可以register起来,作...
    99+
    2022-10-18
  • ansible
    用ansible在客户端上创建一个用户,用户名为test,脚本语言如下:[root@master ansible]# vim 1.yml  --- - name: create_user               /说明代码的作用。可以...
    99+
    2023-01-31
    ansible
  • ansible--roles
    role类似于salt-stack里面的state,state有一定的组织架构。而role则是ansible中playbook的目录组织架构,如果把所有内容都写到playbooks里,可能会导致playbo...
    99+
    2022-10-18
  • ansible (2.4.2.0) A
    转自 jumpserver 5.0 测试版本 下载地址 https://github.com/hequan2017/zabbix-models/tree/master/ansible_run 只是简单改了一下 能够单独使用。 目录结构 a...
    99+
    2023-01-31
    ansible
  • ansible--基础
    马哥出品 ansible中文文档:http://www.ansible.com.cn/index.htmlansible介绍:ansible是个什么东西呢?官方的title是“Ansible is Simp...
    99+
    2022-10-18
  • ansible + tornado + MongoDB
    http://blog.csdn.net/smallfish2983/article/details/38078019照着上面那哥们写的,初学,不要吐血,基本功能实现了。root@ubuntu12:~/an...
    99+
    2022-10-18
  • Python中可变变量与不可变变量详解
    目录一 、常见的变量分类1、变量的创建二、变量分类1、、常见的不可变变量2、常见的可变变量三、拷贝的差别四、参数传递的差别前言: C++不同于Python的显著特点,就是有指针和引用...
    99+
    2022-11-12
  • Python变量教程之全局变量和局部变量
    目录前言全局变量全局关键字前言 全局变量是那些没有在任何函数内部定义并具有全局范围的变量,而局部变量是那些在函数内部定义的变量,其范围仅限于该函数。换句话说,我们可以说局部变量只能在...
    99+
    2022-11-11
  • 变量/常量
    变量的定义把程序运行的中间结果临时的存在内存里,以便后续的代码调用。 变量的作用1.用来存储信息,以便代码调用。2.描述的作用。 变量定义规则1.字母、数字或下划线的任意组合;中横线被视为减号,也不能使用。2.变量名的第一个字符不能是数字...
    99+
    2023-01-30
    常量 变量
  • 变量
    1、机器语言 直接用计算机能理解的二进制指令编写程序,直接控制硬件。 2、汇编语言 用英文标签取代二进制指令编写程序,本质也是直接控制硬件。 3、高级语言 用人能理解的表达方式去编写程序,无需考虑硬件的操作细节。 编译型:...
    99+
    2023-01-30
    变量
  • 如何在PHP中使用常量和变量可变变量
    如何在PHP中使用常量和变量可变变量?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。关于可变变量:以声明的变量前,再加上变量符;运用代码举例说明,如下:<php$china...
    99+
    2023-06-15
  • mysql变量用法实例分析【系统变量、用户变量】
    本文实例讲述了mysql变量用法。分享给大家供大家参考,具体如下: 本文内容: 系统变量 用户变量 局部变量 首发日期:2018-04-18 系统变量: 系统变量就是系统...
    99+
    2022-05-15
    mysql 变量 系统变量 用户变量
  • oracle中关于替代变量,accpt,绑定变量,字符变量
    此文档介绍两个事情,一个是替代变量,另一个就是了解一下硬解析和软解析对于变量来说declare定义的好还是variable定义的好 在oracle 中,对于一个提交的sql语句,存在两种可选的解析...
    99+
    2022-10-18
  • ansible python api 2
     最近想利用python来调用anbile来实现一些功能,发现ansible的api已经升级到了2.0,使用上比以前复杂了许多。 这里我参考了官方文档的例子,做了一些整改,写了一个python调用ansible的函数,执行过程中输出执行结果...
    99+
    2023-01-31
    ansible python api
  • 环境变量之java环境变量
    为什么要配置环境变量? 在配置环境变量之前,首先理解什么是环境变量? 通俗来讲,环境变量是用户 预配置的将来会使用到的可执行文件的物理位置,众所周知,操作系统中几乎所有的软件都是基于如windows操...
    99+
    2023-09-13
    java jvm
  • mysql全局变量和局部变量
    全局变量和局部变量 在服务器启动时,会将每个全局变量初始化为其默认值(可以通过命令行或选项文件中指定的选项更改这些默认值)。然后服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值初始化。 举一个例子...
    99+
    2016-04-03
    mysql全局变量和局部变量
  • Python变量类型及变量引用
    二、变量的类型        Python 不包含像 int 这样的简单类型 —— 只有对象类型, 如果 Python 中需要整数值,将整数赋值给相应变量(如i = 100 )即可。在后台,Python 将创建一个整数对象,并将对新对象的引...
    99+
    2023-01-31
    变量 类型 Python
  • 【CTF-web】变量1(php全局变量)
    题目链接:https://ctf.bugku.com/challenges/detail/id/76.html 注意到$$args,那么我们可以通过args输入一个已定义变量的名称来得到它的值,于是...
    99+
    2023-09-13
    前端 php 开发语言
  • web安全php基础_php常量及可变变量(魔术变量)
    常量 php中常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。 常量有两点需要特别注意的地方 常量...
    99+
    2023-09-26
    php android android studio php常量 php可变变量 php魔术变量
  • Linux的全局变量、局部变量、环境变量实例分析
    本文小编为大家详细介绍“Linux的全局变量、局部变量、环境变量实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux的全局变量、局部变量、环境变量实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作