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

ansible笔记(14)变量(一)

  在ansible中使用变量,能让我们的工作变得更加灵活,在ansible中,变量的使用方式有很多种,我们慢慢聊。
  先说说怎样定义变量,变量名应该由字母、数字、下划线组成,变量名需要以字母开头,ansible内置的关键字不能作为变量名。
  由于之前的几篇文章都是在通过剧本举例,所以我们先聊聊怎样在playbook中使用变量。
  如果我们想要在某个play中定义变量,可以借助vars关键字,示例如下 ---- hosts: test70  vars:    testvar1: testfile  remote_user: root  tasks:  - name: task1    file:      path: /testdir/{{ testvar1 }}      state: touch
  上例中,先使用vars关键字,表示在当前play中进行变量的相关设置。
  vars关键字的下一级定义了一个变量,变量名为testvar1,变量值为testfile
  当我们需要使用testvar1的变量值时,则需要引用这个变量,如你所见,使用"{{变量名}}"可以引用对应的变量。
  也可以定义多个变量,示例如下。 vars:  testvar1: testfile  testvar2: testfile2
  除了使用上述语法,使用YAML的块序列语法也可以定义变量,示例如下 vars:  - testvar1: testfile  - testvar2: testfile2
  在定义变量时,还能够以类似"属性"的方式定义变量,示例如下 ---- hosts: test70  remote_user: root  vars:    nginx:      conf80: /etc/nginx/conf.d/80.conf      conf8080: /etc/nginx/conf.d/8080.conf  tasks:  - name: task1    file:      path: "{{nginx.conf80}}"      state: touch  - name: task2    file:      path: "{{nginx.conf8080}}"      state: touch
  如上例所示,我定义了两个变量,两个变量的值对应两个nginx配置文件路径   vars:    nginx:      conf80: /etc/nginx/conf.d/80.conf      conf8080: /etc/nginx/conf.d/8080.conf
  当我们需要引用这两个变量时,有两种语法可用
  语法一 "{{nginx.conf80}}"
  语法二 "{{nginx["conf8080"]}}"
  这样使用变量在逻辑上比较清晰,可以看出conf80与conf8080都属于nginx相关的配置。
  细心如你一定发现了,上例中,我在引用变量时使用了双引号,而在本文的第一个示例中引用变量时却没有使用双引号,这是因为,第一个示例中的变量在被引用时,并没有处于"开头的位置",第一个示例中变量被引用时如下 path: /testdir/{{ testvar1 }}
  当file模块的path参数引用对应的变量时,先写入了’/testdir/’,然后才引用了"testvar1″变量,{{ testvar1 }}并没有处于"开头的位置",换句话说就是,{{ testvar1 }}前面还有字符串’/testdir/’
  而在上述后面的示例中引用变量时,变量被引用时如下,处于"开头的位置" path: "{{nginx.conf80}}"
  这种情况下,我们引用变量时必须使用双引号引起被引用的变量,否则会报语法错误。
  其实,上述情况也有例外
  前文中有描述过,当在playbook中为模块的参数赋值时,可以使用"冒号",也可以使用"等号",当使用"等号"为模块的参数赋值时,则不用考虑引用变量时是否使用"引号"的问题,示例如下 ---- hosts: test70  remote_user: root  vars:    nginx:      conf80: /etc/nginx/conf.d/80.conf      conf8080: /etc/nginx/conf.d/8080.conf  tasks:  - name: task1    file:      path={{nginx.conf80}}      state=touch  - name: task2    file:      path={{nginx["conf8080"]}}      state=touch
  除了能够在playbook中直接定义变量,我们还可以在某个文件中定义变量,然后再在playbook中引入对应的文件,引入文件后,playbook
  即可使用文件中定义的变量,你可能会问,为什么要多此一举呢?这是因为在某些工作场景中这样做很有用,比如,你想要让别人阅读你的playbook,却不想让别人看到某些值,可以使用这种办法,因为别人在阅读playbook时,只能看到引入的变量名,但是看不到变量对应的值,这种将变量分离到某个文件中的做法叫做"变量文件分离","变量文件分离"除了能够隐藏某些值,还能够让你将不同类的信息放在不同的文件中,并且让这些信息与剧本主体分开。
  先来看看"变量文件分离"的一些小例子
  首先,我们来定义一个专门用来存放nginx相关变量的文件(文件名为nginx_vars.yml),在文件中定义变量时,不要使用vars关键字,直接定义变量即可,定义变量的语法与在playbook中定义变量的几种语法相同 语法一示例:  testvar1: testfile  testvar2: testfile2语法二示例:  - testvar1: testfile  - testvar2: testfile2语法三示例:nginx:  conf80: /etc/nginx/conf.d/80.conf  conf8080: /etc/nginx/conf.d/8080.conf
  你可以选择你觉得较为舒适的语法定义变量,如下所示,直接在nginx_vars.yml文件中定义变量即可。 # cat nginx_vars.ymlnginx:  conf80: /etc/nginx/conf.d/80.conf  conf8080: /etc/nginx/conf.d/8080.conf
  在nginx_vars.yml中定义完相关变量后,即可在playbook中引入文件中的变量,在playbook中引入包含变量的文件时,需要使用"vars_files"关键字,被引入的文件需要以"- "开头,以YAML中块序列的语法引入,示例如下 ---- hosts: test70  remote_user: root  vars_files:  - /testdir/ansible/nginx_vars.yml  tasks:  - name: task1    file:      path={{nginx.conf80}}      state=touch  - name: task2    file:      path={{nginx["conf8080"]}}      state=touch
  上例中使用"vars_files"关键字引入了对应的变量文件,然后使用了文件中定义的变量。
  上例中"vars_files"关键字只引入了一个变量文件,也可以引入多个变量文件,每个被引入的文件都需要以"- "开头,示例如下   vars_files:  - /testdir/ansible/nginx_vars.yml  - /testdir/ansible/other_vars.yml
  "vars"关键字和"vars_files"关键字可以同时使用,如下   vars:  - conf90: /etc/nginx/conf.d/90.conf  vars_files:  - /testdir/ansible/nginx_vars.yml
  除了上述总结,ansible还有一些其他的关于变量的使用方法,暂且放到下一篇文章吧,希望这篇文章能够帮助到你,加油~

vivo首款折叠屏开启折叠屏2。0时代?一起来看看吧手机是日常生活必不可少的工具,近两年手机行业发展迅速,人们不仅仅只满足一块屏幕,于是就促进了手机厂商开始开发新科技,折叠屏也就应运而生。刚开始发布的折叠屏手机都有一个通病,那就是折小米新款旗舰红米K40S,到手仅需1999元要说去年Redmi的明星产品那就不得不提到RedmiK40系列,如此受到消费者的喜爱,Redmi也乘胜追击在K50系列发布的同时,发布了升级版的RedmiK40S,目前这款备受消费苹果,请脱下绿色环保的外衣近日,苹果公司公布了这两年来的环保成绩单通过重新设计,苹果彻底淘汰了包覆iPhone盒体的塑料膜,减少了600吨塑料用量不再随附充电器,据估计,苹果已节省55万吨的铜锡和锌矿石。苹小米12UItra要来了,怪不得小米11UItra,一下子降价2000不得不说,小米的雷军,确实很聪明。借着迭代产品上市之前,来一波降价,顺便清库存和起到借势打压同行竞争者的效果,另外还能吸引一大批手机用户,成为米粉。小米手机是这样的,如果在你从来都个人充电桩卡在最后一公里,如何破题?新能源汽车驶入千家万户,充电桩却被挡在小区门外个人充电桩卡在最后一公里,如何破题?去年以来,国内新能源汽车消费持续升温,私人乘用车市场销售爆发。然而,一些车主买车后却发现,安装个人错过不再有!战神ZX10DA5DP限时优惠,到手价仅8524元4月21日,淘宝神舟电脑旗舰店神舟电脑品牌周活动正式开启。为回馈消费者,神舟全系笔记本95折,而且可以叠加使用500元限时购机神券,粗略看了一下,几乎所有的战神笔记本降价幅度都达到达尔优耳机测评轻盈柔软佩戴舒适,音质出色游戏畅快耳机在生活中是比较常见的,不管是玩游戏,还是打电话追剧,都少不了它的存在,市面上的耳机种类众多,有蓝牙耳机有线耳机,也有头戴式耳机。如果说玩游戏戴哪种耳机比较舒服的话,那必然是头戴跟黑莓很搭,极致手感追求,SanagA11SProMax碳纤纹定制版体验最近发现Sanag推出了一款低调奢华极致手感的气传导蓝牙耳机A11SProMax碳纤纹定制版。碳纤纹路,第一眼看过去,高级感十足,跟黑莓手机的凯夫拉手机外壳很像,让人忍不住上手把玩明明贵了100元,为什么懂行人更推荐一加ACE,而不是K50?高端旗舰卖不动,2000元中端机就成了兵家必争之地。2000元手机越来越卷了,除了真我以外,一加也向焊门员发起了进攻。同样是8128内存,天玑8100,一加Ace是2499元,K5机械键盘TTC轴的颜值代表IQUNIXOG80虫洞如果说电脑是最好的生产力工具,那么机械键盘一定是用的最多配件。如果说我有一个好看的机械键盘,那么是否就不会拖稿了。如果说我不在拖稿,那么我是否可以赚更多钱去买更好看的键盘?以前的我请珍惜四元以下的京东方请大家在这个时间节点多多思考,多空双方为何在苹果订单问题上发生大号自媒体口水战?12019年2月京东方突然V型崛起,连续涨停,单月股价涨幅70,催化剂是华为将采购京东方新投放产能的