ANSIBLE---變量

注冊變量

ansible的模塊在運行之后,其實都會返回一些”返回值”,只是默認情況下,這些”返回值”并不會顯示而已,我們可以把這些返回值寫入到某個變量中,這樣我們就能夠通過引用對應的變量從而獲取到這些返回值了,這種將模塊的返回值寫入到變量中的方法被稱為”注冊變量”。

提示用戶輸入信息并寫入變量

在運行某些腳本時,有時候腳本會提示用戶輸入一些信息,腳本需要根據用戶輸入的信息決定下一步的動作,這種”交互”有時候是必須的,那么,在playbook中該怎樣實現這種交互呢?我們可以這樣做,提示用戶輸入信息,然后將用戶輸入的信息存入到指定的變量中,當我們需要使用這些”輸入的信息”時,只要引用對應的變量即可
使用”vars_prompt”關鍵字創建了兩個變量,在定義” vars_prompt”中的變量時,使用private關鍵字,將變量的private屬性設置為no即可, “private: no”表示變量值為非私有的,可見的,默認情況下 private值為yes,表示不可見。我們還能為提示信息設置默認值,即如果用戶不輸入任何信息,則將默認值賦予變量

[root@server4 ~]# vim bl_test4.yml
[root@server4 ~]# cat bl_test4.yml 
---
- hosts: testBremote_user: rootvars_prompt:- name: "solution"prompt: "Choose the solution you want \nA: solutionA\nB: solutionB\nC: solutionC\n"private: nodefault: Atasks:- name: output varsdebug:msg: The final solution is {{solution}}.

我們使用了default關鍵字設置了”solution”變量的默認值,如果用戶沒有輸入任何值(直接回車),則將”solution”變量的值設置為A,如果用戶輸入了值,則”solution”變量值為用戶輸入的值

encrypt關鍵字表示對用戶輸入的信息進行哈希,encrypt: “sha512_crypt”表示使用sha512算法對用戶輸入的信息進行哈希,當使用”encrypt”關鍵字對字符串進行哈希時,ansible需要依賴passlib庫完成哈希操作,如果未安裝passlib庫(一個用于哈希明文密碼的python庫),執行playbook時會報錯。

除了能夠使用”encrypt”關鍵字對字符串進行哈希加密,還能夠使用”confirm”關鍵字實現類似確認密碼的功能,我們在為用戶設置密碼時,通常需要輸入兩次完全相同的密碼,才能夠設置成功,通過”confirm”關鍵字就能實現類似的效果

通過命令行傳入變量

在調用playbook時使用?–extra-vars選項可以傳遞對應的變量與變量值,?–extra-vars是長選項,對應的短選項是-e,我們也可以一次性傳入多個變量,變量之間用空格隔開。在playbook中定義好變量,然后在執行playbook時,再次傳入相同名稱的變量,最終還是以傳入的變量值為準。命令行傳入的變量的優先級要高于playbook中的變量,傳入相同名稱的變量,除了使用”key=value”的方式傳遞變量,ansible還支持通過json的格式傳入變量。

使用”@”符號加上變量文件的路徑,即可在命令行中傳入對應的變量文件,變量文件中的所有變量都可以在playbook中引用

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535352.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

inux中限制用戶進程CPU和內存占用率

#!/bin/sh PIDStop -bn 1 | grep "^ *[1-9]" | awk { if($9 > 50 || $10 > 25 && id -u $2 > 500) print $1} echo $PIDS for PID in $PIDS dorenice 10 $PIDecho "renice 10 $PID" done

按月拆分數據庫表--oracle

生產有一張日志表,數據量很大,需要按月進行存儲,存儲過程如下: CREATE OR REPLACE PROCEDURE NEWLOG4_SUB_TABLE IStable_name1 VARCHAR2(50);create_table_sql VARCHAR2(4000);insert_data_sql VARC…

plsql定時器

Oralce中的任務有2種:Job和Dbms_job,兩者的區別有: 1. jobs是oracle數據庫的對象, dbms_jobs只是jobs對象的一個實例, 就像對于tables, emp和dept都是表的實例。 2. 創建方式也有…

PL/SQL批處理語句:BULK COLLECT 和 FORALL

PL/SQL程序中運行SQL語句是存在開銷的,因為SQL語句是要提交給SQL引擎處理,這種在PL/SQL引擎和SQL引擎之間的控制轉移叫做上下文卻換,每次卻換時,都有額外的開銷 請看下圖: 但是,FORALL和BULK COLLEC…

oracle 中DATETIME與TIMESTAMP區別

1.DATETIME的日期范圍是1001——9999年,TIMESTAMP的時間范圍是1970——2038年。 2.DATETIME存儲時間與時區無關,TIMESTAMP存儲時間與時區有關,顯示的值也依賴于時區。在mysql服務器,操作系統以及客戶端連接都有時區的設置。 3.DAT…

PARALLEL(并行)

在Oracle中,PARALLEL(并行)方式最大化調用計算機資源來成倍提高數據分析效率。 1. 用途 強行啟用并行度來執行當前SQL。這個在Oracle 9i之后的版本可以使用,之前的版本現在沒有環境進行測試。也就是說,加…

Oracle數據庫查詢優化

1.對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如: select id from t w…

redis-full-check

https://github.com/alibaba/RedisFullCheck/releases redis-full-check是阿里云Redis&MongoDB團隊開源的用于校驗2個redis數據是否一致的工具。 ??redis-full-check通過全量對比源端和目的端的redis中的數據的方式來進行數據校驗,其比較方式通過多輪次比較&a…

2021-06-22

服務器信息 [rootiZs7z01dz0z12dyttz9zn5Z cluster]# /app/redis/redis-3.2.1/src/redis-cli -c -h 10.252.120.9 -p 8003 10.252.120.9:8003> cluster nodes b1f543d646c5c97a70b0635439a44a72f8a143b1 10.252.120.10:8004 master - 0 1624349601417 7 connected 0-5460 1…

Docker目錄掛載

Docker容器啟動的時候,如果要掛載宿主機的一個目錄,可以用-v參數指定。 譬如我要啟動一個centos容器,宿主機的/test目錄掛載到容器的/soft目錄,可通過以下方式指定: # docker run -it -v /test:/soft centos /bin/ba…

Redis主從復制原理學習

Redis主從復制原理學習總結 - 運維筆記 和Mysql主從復制的原因一樣,Redis雖然讀取寫入的速度都特別快,但是也會產生讀壓力特別大的情況。為了分擔讀壓力,Redis支持主從復制,Redis的主從結構可以采用一主多從或者級聯結構&#xff…

redis數據恢復

公司線上一個項目數據存儲采用MySQL,共分為10個庫,分布在4臺機器上,每個庫數據量約為10G,各機器均采用RAID5加速磁盤訪問; 當同時在線人數達高峰期(10w),DB磁盤IO壓力巨大&#xff0…

Redis哨兵模式(sentinel)學習總結及部署記錄(主從復制、讀寫分離、主從切換)

Redis的集群方案大致有三種:1)redis cluster集群方案;2)master/slave主從方案;3)哨兵模式來進行主從替換以及故障恢復。 一、sentinel哨兵模式介紹 Sentinel(哨兵)是用于監控redis集群中Master狀態的工具&…

Redis之Redis內存模型

Redis是目前最火爆的內存數據庫之一,通過在內存中讀寫數據,大大提高了讀寫速度,可以說Redis是實現網站高并發不可或缺的一部分。 我們使用Redis時,會接觸Redis的5種對象類型(字符串、哈希、列表、集合、有序集合&…

MySQL 數據庫誤刪除后的數據恢復操作說明

在日常運維工作中,對mysql數據庫的備份是萬分重要的,以防在數據庫表丟失或損壞情況出現,可以及時恢復數據。 線上數據庫備份場景: 每周日執行一次全量備份,然后每天下午1點執行MySQLdump增量備份. 下面對這種備份方案…

MySQL 之binlog日志說明及利用binlog日志恢復數據操作記錄

眾所周知,binlog日志對于mysql數據庫來說是十分重要的。在數據丟失的緊急情況下,我們往往會想到用binlog日志功能進行數據恢復(定時全備份binlog日志恢復增量數據部分),化險為夷! 一、簡單了解binlog MySQ…

zabbix巡檢腳本

#!/bin/bash BIN/usr/local/zabbix/binpasswort() { name$2 while read line do ipecho $line|awk -F {print $1} timeecho $line|awk -F {print $2} echo -e "${name}passport${ip}探活時間\t $time" done <$1 }for i in 100.245.160.113 100.245.160.141 1…

mysqldump備份(全量+增量)

在日常運維工作中&#xff0c;對mysql數據庫的備份是萬分重要的&#xff0c;以防在數據庫表丟失或損壞情況出現&#xff0c;可以及時恢復數據。 線上數據庫備份場景&#xff1a; 每周日執行一次全量備份&#xff0c;然后每天下午1點執行MySQLdump增量備份. 下面對這種備份方案…

查找指定日期數據所在分區數據

select a.subobject_namefrom dba_objects a join (select dbms_rowid.rowid_object(rowid) object_idfrom NEWLOG4 where TO_CHAR(autudt,YYYY-MM-DD) 2021-06-22) b on a.object_id b.object_id and object_name UPPER(NEWLOG4) group by a.subobject_name

統計內存使用率shell

#!/bin/bashdatedate "%Y-%m-%d %H:%M:%S"#顯示消耗資源內存最高的進程名firstps aux | grep -v "grep" | grep -v "USER" | sort -rn -k 4 | head -4 | awk -F {print $13} | sed -n 1pSecondps aux | grep -v "grep" | grep -v &q…