范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

一文详解Ansible变量,建议收藏学习

  Ansible 和其他编辑语言一样,可以通过变量来存储值,并在 Ansible 项目的所有文件中使用这些值。
  变量的命名规则:  必须以字母开头;  只能包含字母,数字和下划线;
  变量范围:
  Global:全局变量,在命令行中,通过  -e  参数传递;
  Play:在 Playbook 中的 play 里面 通过 vars 或 vars_files 关键字定义的变量
  Host:由清单中,主机或主机组中定义的变量  全局变量
  编写 playbook,在该 playbook 中,我们为 apt 模块来安装软件包,并为软件包的 name 选项指定一个名为 package 的变量;  it@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;cat test.yml --- - name: Install Apache   hosts: servera   tasks:     - name: Install {{ package }}       apt:         name: "{{ package }}"         state: present
  * 在 play 中通过 "{{ VariableName }}"
  * 在需要打印出来的字段中引用变量不需要加引号,在其他地方引用变量需要加引号,如,在 name 中引用,因为变量名与花括号之间有空格,name 不能把他们识别成一个整体,所以不加引号会报错;
  运行 playbook 时,通过 -e 来指定变量名对应的值;  it@workstation:~/ansiblenbsp;ansible-playbook test.yml -e "package=apache2" BECOME password:   PLAY [Install Apache] ******************************************************************************  TASK [Gathering Facts] ***************************************************************************** ok: [servera]  TASK [Install apache2] ***************************************************************************** ok: [servera]  PLAY RECAP ***************************************************************************************** servera                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
  * 我前面已经执行过安装 Apache2 了,所以这里执行的结果是 ok,而不是 changed;  Play 变量
  Play 变量就是在 playbook 中为每个 play 定义的变量,play 变量可以直接定义在 play 中,通过 vars 关键字定义;也可以定义在文件中,然后在 play 中通过 vars_files 关键字导入变量文件;
  通过 vars 关键字定义变量
  创建 playbook,并通过 vars 关键定义一个 user 的变量,对应的值为 Jack  it@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;cat test.yml --- - name: Create User   hosts: servera   vars:     user: jack   tasks:     - name: Create a user named {{ user }}       user:         name: "{{ user }}"
  运行 playbook  it@workstation:~/ansiblenbsp;ansible-playbook test.yml BECOME password:   PLAY [Create User] *********************************************************************************  TASK [Gathering Facts] ***************************************************************************** ok: [servera]  TASK [Create a user named jack] ******************************************************************** changed: [servera]  PLAY RECAP ***************************************************************************************** servera                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
  从创建用户的 task 名称可以看到,变量 user 被其对应的值所替换;
  通过文件定义变量
  创建变量文件,并在文件中定义一个 user 变量,并指定值为 Jerry  it@workstation:~/ansiblenbsp;vim user.yml it@workstation:~/ansiblenbsp;cat user.yml --- user: jerry
  * 注意变量文件的格式应为 yml 文件格式;
  编写 playbook,在 play 中通过 vars_files 关键字来导入变量文件  it@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;cat test.yml --- - name: Create User   hosts: servera   vars_files:     - user.yml   tasks:     - name: Create a user named {{ user }}       user:         name: "{{ user }}"主机变量
  编辑主机清单,在主机后面添加一个 user 变量,并指定值为 user1;  it@workstation:~/ansiblenbsp;vim hosts  it@workstation:~/ansiblenbsp;cat hosts serverb user=user1  [web] servera  [prod:children] web
  创建 playbook  it@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;cat test.yml --- - name: Create User   hosts: serverb   tasks:     - name: Create a user named {{ user }}       user:         name: "{{ user }}"
  运行 playbook  it@workstation:~/ansiblenbsp;ansible-playbook test.yml  BECOME password:   PLAY [Create User] *********************************************************************************  TASK [Gathering Facts] ***************************************************************************** ok: [serverb]  TASK [Create a user named user1] ******************************************************************* changed: [serverb]  PLAY RECAP ***************************************************************************************** serverb                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
  变量 user 被对应的值,user1 替换了;
  我们还可以在主机变量目录(host_vars)中定义主机变量文件
  更改清单,删除清单中定义的变量  it@workstation:~/ansiblenbsp;vim hosts  it@workstation:~/ansiblenbsp;cat hosts serverb  [web] servera  [prod:children] web
  在 ansible 目录中创建一个 host_vars 目录,并在这个目录下以主机名创建一个 yml 文件,并在文件中指定 user 变量;  it@workstation:~/ansiblenbsp;mkdir host_vars it@workstation:~/ansiblenbsp;vim host_vars/servera.yml it@workstation:~/ansiblenbsp;cat host_vars/servera.yml --- user: user2
  编辑 playbook  t@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;cat test.yml --- - name: Create User   hosts: servera   tasks:     - name: Create a user named {{ user }}       user:         name: "{{ user }}"
  运行 playbook  it@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;ansible-playbook test.yml  BECOME password:   PLAY [Create User] *********************************************************************************  TASK [Gathering Facts] ***************************************************************************** ok: [servera]  TASK [Create a user named user2] ******************************************************************* changed: [servera]  PLAY RECAP ***************************************************************************************** servera                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
  变量 user 被对应的值,user2 替换了;  主机组变量
  编辑主机清单文件,通过 [GroupName:vars] 为主机组添加变量  it@workstation:~/ansiblenbsp;vim hosts  it@workstation:~/ansiblenbsp;cat hosts serverb  [web] servera serverb  [prod:children] web  [web:vars] user=user3
  删除之前在 host_vars 目录下创建的变量文件  it@workstation:~/ansiblenbsp;rm host_vars/servera.yml
  编辑 playbook  it@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;cat test.yml --- - name: Create User   hosts: web   tasks:     - name: Create a user named {{ user }}       user:         name: "{{ user }}"
  运行 playbook  it@workstation:~/ansiblenbsp;ansible-playbook test.yml  BECOME password:   PLAY [Create User] *********************************************************************************  TASK [Gathering Facts] ***************************************************************************** ok: [servera] ok: [serverb]  TASK [Create a user named user3] ******************************************************************* changed: [servera] ok: [serverb]  PLAY RECAP ***************************************************************************************** servera                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    serverb                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
  变量 user 被对应的值,user3 替换了;
  同样,你也可以通过组变量文件目录(group_vars)定义主机组变量文件
  更改主机清单,删除前面创建的主机变量  t@workstation:~/ansiblenbsp;vim hosts it@workstation:~/ansiblenbsp;cat hosts serverb  [web] servera serverb  [prod:children] web
  创建主机组变量目录,并以组名作为文件名,创建一个 yml 格式的变量文件,并在文件中指定 user 变量,值为 user4;  it@workstation:~/ansiblenbsp;mkdir group_vars it@workstation:~/ansiblenbsp;vim group_vars/web.yml it@workstation:~/ansiblenbsp;cat group_vars/web.yml --- user: user4
  创建 playbook  it@workstation:~/ansiblenbsp;vim test.yml  it@workstation:~/ansiblenbsp;cat test.yml --- - name: Create User   hosts: web   tasks:     - name: Create a user named {{ user }}       user:         name: "{{ user }}"
  运行 playbook  it@workstation:~/ansiblenbsp;ansible-playbook test.yml  BECOME password:   PLAY [Create User] *********************************************************************************  TASK [Gathering Facts] ***************************************************************************** ok: [servera] ok: [serverb]  TASK [Create a user named user4] ******************************************************************* changed: [serverb] changed: [servera]  PLAY RECAP ***************************************************************************************** servera                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    serverb                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
  变量 user 被对应的值,user4替换了。
  后面会分享更多ansible、k8s、docker等方面内容,感兴趣的朋友可以关注下!
  *特别声明:本文为【怕水的鱼】投稿,仅代表作者观点。马哥教育仅提供信息发布平台。

iPhoneSE2与iPhoneXR对比区别一览无余不得不说,iPhone手机每次更新换代都如出一辙,毫无新意可言,却又异常火爆,比如当前的苹果旗舰手机iPhone13系列价格昂贵不说,却仍然是一机难求。如果您的预算有限,从实用性的36氪首发臻驱科技获3亿元融资,加码研发碳化硅电驱方案36氪获悉,国产功率半导体模块及电驱动系统解决方案公司臻驱科技完成3亿元的B2轮融资。本轮融资由中金资本领投,容亿投资招商局资本浦东科创集团旗下海望资本等新股东跟投。此外,君联资本医疗创新突破临界点后,互联网医疗将如何发展?21世纪经济报道记者魏笑深圳报道数字医疗领域发展前景不可估量!近日,在海豚数字医疗产业园启动仪式暨2021中国成都数字医疗产业高峰论坛上,中电光谷副总裁贺海华向21世纪经济报道记者这次要和高通正面打?联发科旗舰芯片曝光,台积电4nm工艺X2大核虽然联发科最近不管是营收还是市场份额都有着比较惊人的增长,但是可以看到不少高端旗舰手机所选用的处理器依旧是高通的骁龙8系列处理器。而联发科的旗舰处理器天玑1200和天玑1100往往苹果12ProMAX老掉线原因?视频加载中今年三四月份,在朋友推荐下入手一部苹果12ProMAX手机,偶发掉线。后来在家打电话掉线特别严重,尤其是边打电话边走动或转动身体的情况下,在室外掉线频率低一些。和苹果客服老年人的听力不好,助听器对他有没有作用呢?你好,老年人听力不好,要去专业的机构检测听力,看看助听器对她有没有帮助,建议听取专业人士的意见助听器需要专业验配,老人佩戴助听器的好处有1。听的更清楚减缓听力衰老的进程2。减少患老中国联通要弯道超车,胜算有几何?还弯道超车?就是直道你也没超过谁,弯道走的路更多,你更是没有机会超越别人!超谁的车呢?弯道超赢了,直道又被超回来了!除非一直转圈圈,终点不停回到起点,胜了又如何?看到联通的弯道超车红米K50Pro搭载骁龙898处理器,红米K40提前来砸场,大米价再现红米K50系列爆出的信息也很多了,红米K50将不会继续使用4800万主摄,红米K50Pro则是采用5000万像素主摄,预计红米K50Pro采用2K三星E5曲面屏,预计红米K50Pr有人说,人的欲望和贪婪才是经济发展的第一动力,对吗?这是一个很好的问题,只是用词上有点欠妥,如果用不知足或许还能勉强。我想人类的发展就是出自不知足的追求,只要你走的是正道,不知足才能使你不断的学习成长,不知足是的发明创造的动力,不知开源java项目推荐可能是java最好的博客项目httpsgithub。comhalodevhalojava工具库集合httpsgithub。comloolyhutool微服务落地脚手架httpsgi36氪首发从发票数字化到业财一体化系统,迅联云获过亿元A轮融资作者咏仪编辑苏建勋36氪获悉,迅联云获过亿元人民币A轮融资,由太盟投资集团独投(PAG)。本轮融资主要用于产品研发创新市场布局以及风控安全等管理体系建设。迅联云成立于2018年,从
网传五菱宏光MINIEV上海上牌受限网友连夜造出加长版作为新晋代步神车,近日,五菱宏光MINIEV在上海将无法申请新能源牌照的消息在网上流传,一瞬间引起广大网友的激烈讨论,网友们也为不能上牌的宏光MINIEV操碎了心。日前,有网友制作众泰汽车重整受阻,意向投资人上海智阳决定暂缓投资5月12日讯今日,ST众泰发布公告称,收到公司预重整管理人转交的上海智阳投资有限公司(以下简称上海智阳)向其发出的函,上海智阳决定暂缓推进对众泰汽车的投资事宜。函件内容显示,基于上上海一蓝牌特斯拉冲进宾馆大门!网友刀法太精准近日,因为刹车失灵质疑,女车主登上上海车展车顶维权,特斯拉成为了国内汽车圈的顶流。而今,随着特斯拉热度的持续升温,越来越多的特斯拉失控事件被爆了出来。日前,有网友上传的一组图片显示我国现存锂电池相关企业4。74万家今年前8月新增2324家9月18日消息,企查查发布的数据显示,我国现存锂电池相关企业共4。74万家,近10年来,锂电池相关企业注册量整体呈上升趋势。其中,2016年,国家一系列锂电池行业的政策新规陆续公布月亮湾彩云南,小黑盒露新颜闹完元宵过完年,今年春节,中国疫苗成为许多发展中国家最期盼的春节礼物。这让国内外防疫力量沸腾了,人们把遏制疫情的希望寄托在了疫苗上。打疫苗了吗?成为日常问候的同时,我们仍要积极做好数智重构新物种MGONE实车首次亮相,定位智潮科技SUV7月30日,MG旗下首款智潮科技SUVMGONE在上海油罐艺术中心开启全球首秀。该车是诞生于上汽智能全球模块化架构SIGMA的一款全新紧凑型SUV,是MG用品类思维强化品牌表达打造遇鉴时尚新物种2022款欧拉黑猫欧拉小野猫正式上市8月14日,由欧拉汽车联手瑞丽共同打造的遇鉴时尚新物种潮流大番榜欧拉双猫时尚秀正式开启。2022款欧拉黑猫欧拉小野猫领潮上市,其中2022款欧拉黑猫售价6。988。48万元2022京东品质购物节火爆开启,电脑数码一站式以旧换新省心更省钱天气终于暖和了,我家的这个旧空调也该退休息了。武汉没暖气,空调成为了冬天取暖的必备设施,但启动慢不制暖还费电的老空调,着实让鹿姨头疼不已。买新空调,还得处理旧空调,一来一回花时间不ChinaJoy2021存储新发现铠侠亮相多款高性能存储新品不一样的时期,一样精彩的ChinaJoy。作为目前全球最具专业性权威性和国际性的数字娱乐产业展会之一,第十九届ChinaJoy目前正于2021年7月30日8月2日在上海新国际博览中那些年的数码iPhone篇2016年的时候,给包里的EDC拍过全家福,转眼间已经2021年了,五年的时间一闪而过,图中仍在服役的设备只剩下佳能60D和俩镜头,突发奇想对这几年用过的一些数码产品进行一下盘点梳华为首款汽车已开卖!华为成立汽车特别项目组4月28日消息,据媒体报道,华为内部已任命欧洲消费者业务总裁戢仁贵接替汪严旻,出任华为全球生态发展部总裁。汪严旻将负责新成立的生态特别项目优化组。据称,该特别项目优化组和汽车业务有