当前位置: 首页 > news >正文

制作动画的网站保亭住房和城乡建设局网站

制作动画的网站,保亭住房和城乡建设局网站,成都cim软件公司,在网站后台为什么不显示百分号一#xff09;Ansible变量介绍 我们在PlayBook⼀节中#xff0c;将PlayBook类⽐成了Linux中的shell。 那么它作为⼀⻔Ansible特殊的语⾔#xff0c;肯定要涉及到变量定义、控 制结构的使⽤等特性。 在这⼀节中主要讨论变量的定义和使⽤ 二#xff09;变量命名规则 变量的…一Ansible变量介绍 我们在PlayBook⼀节中将PlayBook类⽐成了Linux中的shell。 那么它作为⼀⻔Ansible特殊的语⾔肯定要涉及到变量定义、控 制结构的使⽤等特性。 在这⼀节中主要讨论变量的定义和使⽤ 二变量命名规则 变量的名字由字母、下划线和数字组成必须以字母开头。 如下变量命名为正确格式 good_a ok_b如下是错误的变量名: _aaa 2_bb保留关键字不可以作为变量名称 add, append, as_integer_ratio, bit_length, capitalize, center, clear, conjugate, copy, count, decode, denominator, difference, difference_update, discard, encode, endswith, expandtabs, extend, find, format, fromhex, fromkeys, get, has_key, hex, imag, index, insert, isalnum, intersection, intersection_update, isalpha, isdecimal, isdigit, isdisjoint, is_integer, islower, isnumeric, isspace, issubset, issuperset, istitle, isupper, items, iteritems, iterkeys, itervalues, join, keys, ljust, lower,lstrip, numerator, partition, pop, popitem, real, remove,replace, reverse, rfind, rindex, rjust, rpartition, rsplit, rstrip,setdefault, sort, split, splitlines, startswith, strip, swapcase, symmetric_difference, symmetric_difference_update, title, translate, union, update, upper, values, viewitems, viewkeys, viewvalues, zfill三变量类型 根据变量的作用范围大体的将变量分为 全局变量剧本变量资产变量 但这是一种较为粗糙的划分不足以囊括Ansible中的所有变量。 1.全局变量 全局变量是我们使⽤ansible 或使⽤ansible-playbook 时⼿动 通过 -e 参数传递给Ansible 的变量。 通过ansible 或 ansible-playbook 的 help 帮助, 可以获取具体格 式使⽤⽅式: # ansible-playbook -h | grep var-e EXTRA_VARS, --extra-vars EXTRA_VARSset additional variables as keyvalue or YAML/JSON, if# ansible -h |grep varpath for many features including roles/ group_vars/-e EXTRA_VARS, --extra-vars EXTRA_VARSset additional variables as keyvalue or YAML/JSON, if例子 传递普通的keyvalue 的形式 ansible all -i localhost, -m debug -a msgmy key is {{ key }} -e keyvalue传递⼀个YAML/JSON 的形式(注意不管是YAML还是JSON它们的最终格式⼀定要是⼀个字典) Json格式---- ansible all -i localhost, -m debug -a msgname is {{ name }}, type is {{ type }} -e a.jsonYml格式– ansible all -i localhost, -m debug -a msgname is {{ name }}, type is {{ type }} -e a.yml2.剧本变量 在这只介绍两种最常用的定义方式 a.通过PLAY属性vars定义 --- - name: test play varshosts: allvars:user: yuhome: /home/yub.通过PLAY属性var_files定义 当通过vars属性定义的变量很多时这个Play就会感觉特别臃肿。 此时我们可以将变量单独从Play中抽离出来形成单独的YAML ⽂件。 --- - name: test play varshosts: allvars_files:- vars/users.ymlc.在Playbook中使用变量的注意点 --- # 这⾥我们将上⾯的Playbook中引⽤变量的部分进⾏修改去掉了双 引号。 - name: test play varshosts: allvars:user: lileihome: /home/lileitasks:- name: create the user {{ user }}user:# 注意这⾥将 {{ user }} 改成了 {{ user }}name: {{ user }}home: {{ home }}”执行以上的Playbook时就会出现以下的错误 这样错误的主要原因是PlayBook 是YAML 的⽂件格式 当Ansible 分析YAML ⽂件时有可能会误认为字典。name: {{ user }} 是⼀个字典的开始。因此加针对变量的使⽤加上了双引号避免Ansible错误解析。 3.资产变量 资产变量分为主机变量和主机组变量分别针对资产中的单个主机 和主机组。 3.1主机变量 下面给大家一个实例在以下资产中定义了一个主机变量lilei此变量只针对192.168.244.130这台服务器有效。 接下来掩饰验证 先获取定义的变量值 ansible 192.168.244.131 -i hostsandhostvars -m debug -a msg{{user}} {{port}}可以看见运行结果 那么未获取到定义的变量值因为user这个变量针对192.168.244.130主机无效 ansible 192.168.244.130 -i hostsandhostvars -m debug -a varuser3.2主机组变量 以下资产中定义了⼀个组变量home 此变量将针对webservers 这个主机组中的所有服务器有效。 验证 home是web_servers的组变量会针对这个组内的所有服务器生效。 ansible webservers -i hostsandgroupvars -m debug -a varhome3.3主机变量vs主机组变量 接下来讨论一个问题如果主机变量和组变量在同一资产中重名会发生什么呢 我们在资产中定义主机变量和组变量user那么此时我们可以发现192.168.244.130这台机器的主机变量user的优先级更高。 ansible webservers -i hosts_2 -m debug -a varuser3.4变量的继承 资产可以继承那么变量当然也可以继承。 在资产继承的同时对应的变量也会发生继承。 ansible allservers -i hosts_3 -m debug -a varuseransible dbservers -i hosts_3 -m debug -a varuseransible webservers -i hosts_3 -m debug -a varuser3.5 Inventory内置变量的说明 内置变量一般都会以ansible_为前缀 ansible_ssh_host #将要连接的远程主机名与你想要设定的主机的别名不同的话,可通过此变量设置. ansible_ssh_port #ssh端⼝号.如果不是默认的端⼝号,通过此变量设置. ansible_ssh_user #默认的 ssh ⽤户名 ansible_ssh_pass #ssh 密码(这种⽅式并不安全,官⽅强烈建议使⽤ --askpass 或 SSH 密钥) ansible_sudo_pass #sudo 密码(这种⽅式并不安全,官⽅强烈建议使⽤ --asksudo-pass) ansible_sudo_exe (new in version 1.8) #sudo 命令路径(适⽤于1.8及以上版本) ansible_ssh_private_key_file #ssh 使⽤的私钥⽂件.适⽤于有多个密钥,⽽你不想使⽤ SSH代理的情况. ansible_python_interpreter #⽬标主机的 python 路径.适⽤于的情况: 系统中有多个Python, 或者命令路径不是/usr/bin/python,⽐如 /usr/local/bin/python34.Facts变量 Facts变量不包含在前⽂中介绍的全局变量、剧本变量及资产变量 之内。 Facts变量不需要我们⼈为去声明变量名及赋值。 它的声明和赋值完全有Ansible 中的 setup 模块帮我们完成。 它收集了有关被管理服务器的操作系统版本、服务器IP地址、主机名磁盘的使⽤情况、CPU个数、内存⼤⼩等等有关被管理服务器的私有信息。 在每次PlayBook运⾏的时候都会发现在PlayBook执⾏前都会有⼀个Gathering Facts的过程。这个过程就是收集被管理服务器的Facts信息过程。 4.1手动收集Facts变量 ansible all -i localhost, -c local -m setup运行结果有很多我就不全部截取了 4.2过滤Facts 通过刚刚的⼿动收集Facts我们发现facts 信息量很⼤。 能不能有针对性的显示我们想要的信息呢? 可以通过使⽤Facts 模块中的filter参数去过滤我们想要的信息。 仅获取服务器的内存情况信息 ansible all -i localhost, -m setup -a filter*memory* -c local仅获取服务器的磁盘挂载情况 ansible all -i localhost, -m setup -a filter*mount* -c local4.3在Playbook中去使用Facts变量 默认情况下在执⾏PlayBook的时候它会去⾃动的获取每台被管理服务器的facts信息。 --- - name: a play examplehosts: allremote_user: roottasks:- name: install nginx packageyum: namenginx statepresent- name: copy nginx.conf to remote servercopy: srcnginx.conf dest/etc/nginx/nginx.conf- name: start nginx serverservice:name: nginxenabled: truestate: started将这段playbook命名为test_1.yml并且执行 ansible-playbook test_1.yml可以像使用其他变量一样去使用facts变量 --- - name: print facts variablehosts: alltasks:- name: print facts variabledebug:msg: The default IPV4 address is {{ ansible_default_ipv4.address }}在playbook中去关闭Facts变量的获取 若在整个playbook的执行过程中完全未使用过Facts变量此时我们可以将其关闭以加快playbook的执行速度。 --- - name: a play examplehosts: webservers# 关闭 facts 变量收集功能gather_facts: noremote_user: roottasks:- name: install nginx packageyum: namenginx statepresent- name: copy nginx.conf to remote servercopy: srcnginx.confdest/etc/nginx/nginx.conf- name: start nginx serverservice:name: nginxenabled: truestate: started将其命名为test_2.yml并且执行 ansible-playbook -i hosts test_2.yml5.注册变量 往往⽤于保存⼀个task任务的执⾏结果, 以便于debug时使⽤。 或者将此次task任务的结果作为条件去判断是否去执⾏其他task任务。 注册变量在PlayBook中通过register关键字去实现。 --- - name: install a package and print the resulthosts: webserversremote_user: roottasks:- name: install nginx packageyum: namenginx statepresentregister: install_result- name: print resultdebug: varinstall_result将以上代码命名为test_3.yml并执行 ansible-playbook test_3.yml6.变量优先级 ⽬前介绍了全局变量、剧本变量、资产变量、Facts变量及注册变量。 其中Facts变量不需要⼈为去声明、赋值注册变量只需通过关键字register去声明⽽不需要赋值。 ⽽全局变量、剧本变量及资产变量则完全需要⼈为的去声明、赋值。 变量的优先权讨论也将着重从这三类变量去分析。 假如在使⽤过程中我们同时在全局变量、剧本变量及资产变量声明了同⼀个变量名那么哪⼀个优先级最⾼呢? 下⾯我们将以实验的形式去验证变量的优先级 环境准备 定义一份资产、且定义了资产变量user (由于试验机性能问题我缩减了试验机的数量读者可自行增加) 编写一份Playbook、同样定义剧本变量user --- - name: test variable priorityhosts: allremote_user: rootvars:user: mysqltasks:- name: print the user valuedebug: msgthe user value is {{ user }}将其命名为test_4.yml 验证测试– 同时使用全局变量、剧本变量、资产变量 当变量user同时定义在全局变量、剧本变量及资产变量中时全局变量的优先级最⾼。 ansible-playbook -i hosts test_4.yml -e userwww同时使用剧本变量和资产变量 取消全局变量发现剧本变量的优先级要高于资产变量的优先级 ansible-playbook -i hosts test_4.yml只是用资产变量的情况下 我们不使用全局变量、且注释掉剧本变量后资产变量才最终生效。 --- - name: test variable priorityhosts: allremote_user: root#vars:# user: mysqltasks:- name: print the user valuedebug: msgthe user value is {{ user }}ansible-playbook -i hosts test_4.yml**变量优先级结论 ** 当⼀个变量同时在全局变量、剧本变量和资产变量中定义时优先级最⾼的是全局变量其次是剧本变量最后才是资产变量。
http://www.hkea.cn/news/14317528/

相关文章:

  • 网站优化如何做pc指数推广普通话的顺口溜
  • 企业网站设计能否以图片wordpress主题
  • 喜欢做网站网站被黑怎么办
  • 谷哥做网站 是如何推广的树莓派搭建wordpress卡不卡
  • 广州市建设监理协会网站商城网站建设策划书
  • 网站开发需要什么软件有哪些三亚做网站的公司
  • 建设银行北海市分行网站宿迁房产
  • 杭州网站优化排名wordpress 变成英文
  • 河南建设银行招聘网站海口房产网站建设
  • 寻花问柳-专注做一家男人的网站做网站要不要花钱做店长
  • 摄影公司网站开发公司合理化建议
  • 河北网站建设免费推荐网站制作费可以做业务宣传费
  • 营销型网站建设计划书小企业网站建设在哪能看
  • 兔展在线制作网站百度免费安装下载
  • 网站建设 价格做外贸上哪些网站
  • 建站工具 ip做机器设备的网站
  • 网站开发5000最小的wordpress主题
  • 做英文网站需要哪些东西网址打包成apk工具
  • 邦利博客网站怎么做的jsp做网站前端实例
  • 绍兴做网站哪家好未备案网站
  • 徐州建设厅网站网站开发怎么做才有利于seo
  • 网站建设代理哪个好十大免费ae模板网站
  • 新洲建设投标网站做软件与做网站建设有什么区别
  • 做ppt封面的网站wordpress 数据库清理
  • 临汾网站建设价格网站做的比较好的贸易公司
  • 然后建设一个论坛网站中国免费网站服务器下载
  • 易语言做网站视频网站搭建的费用
  • 我的小程序在哪里找新乐做网站优化
  • 阿里巴巴怎么建设网站首页如何建立商城网站
  • 庆阳网站设计厂家做苗木免费网站