中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ansible--變量

發布時間:2020-08-08 04:43:37 來源:網絡 閱讀:1587 作者:Gavin7216 欄目:MySQL數據庫

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--變量


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青冈县| 泌阳县| 凉城县| 鹤峰县| 南江县| 邳州市| 黄陵县| 依安县| 小金县| 塘沽区| 兴国县| 赤水市| 吕梁市| 江陵县| 金川县| 拉孜县| 栾城县| 华安县| 龙门县| 荥经县| 青铜峡市| 五家渠市| 辽中县| 武安市| 宁明县| 荥阳市| 尚义县| 桃园市| 横峰县| 香港| 靖西县| 济阳县| 永安市| 佛学| 天峨县| 辽源市| 咸丰县| 锡林浩特市| 梅州市| 开阳县| 阿勒泰市|