Ansible和其他编辑语言一样,可以通过变量存储值,并在Ansible项目的所有文件中使用这些值。
变量的命名规则:
必须以字母开头;它只能包含字母;数字和下划线。变量范围:
Global:全局变量,通过命令行中的-e参数传递;
Play:由Playbook中Play的vars或vars_files关键字定义的变量。
主机:在列表、主机或主机组中定义的变量。
为全局变量编写剧本。在本剧本中,我们为apt模块安装软件包,并为软件包的名称选项指定一个名为package的变量。
it @ workstation : ~/Ansi ble $ vim test . ymlit @ workstation : ~/Ansi $ cat test . yml-name : installapachehosts 3360 servera tasks 3360-name 3360 install { { package } } apt 3360 name 3360“{ package } }”状态3360 present *通过“{{ VariableName }}”进行中
*在需要打印的字段中引用变量不需要引号,在其他地方引用变量需要引号,例如在名称中。因为变量名和花括号之间有空格,name不能整体识别,所以没有引号会报错;
运行剧本时,用-e指定变量名对应的值;
it @ workstation : ~/ansi bleansi ble-playbooktest . yml-e ' package=Apache 2 ' become password : play * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * OK 3360 TASK;
游戏变量游戏变量是为游戏手册中的每个游戏定义的变量。Play变量可以在play中直接定义,用vars关键字定义;也可以在文件中定义,然后通过play中的vars_files关键字导入变量文件;
通过vars关键字定义变量
创建一个剧本,通过vars键定义一个变量user,对应的值是Jack。
p>it@workstation:~/ansible$ vim test.yml it@workstation:~/ansible$ cat test.yml---- name: Create User hosts: servera vars: user: jack tasks: - name: Create a user named {{ user }} user: name: "{{ user }}"运行 playbookit@workstation:~/ansible$ ansible-playbook test.ymlBECOME password: PLAY
通过文件定义变量
创建变量文件,并在文件中定义一个 user 变量,并指定值为 Jerry
it@workstation:~/ansible$ vim user.ymlit@workstation:~/ansible$ cat user.yml---user: jerry* 注意变量文件的格式应为 yml 文件格式;
编写 playbook,在 play 中通过 vars_files 关键字来导入变量文件
it@workstation:~/ansible$ vim test.yml it@workstation:~/ansible$ 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:~/ansible$ vim hosts it@workstation:~/ansible$ cat hostsserverb user=user1
it@workstation:~/ansible$ vim test.yml it@workstation:~/ansible$ cat test.yml---- name: Create User hosts: serverb tasks: - name: Create a user named {{ user }} user: name: "{{ user }}"运行 playbook
it@workstation:~/ansible$ ansible-playbook test.yml BECOME password: PLAY
我们还可以在主机变量目录(host_vars)中定义主机变量文件
更改清单,删除清单中定义的变量
it@workstation:~/ansible$ vim hosts it@workstation:~/ansible$ cat hostsserverb
it@workstation:~/ansible$ mkdir host_varsit@workstation:~/ansible$ vim host_vars/servera.ymlit@workstation:~/ansible$ cat host_vars/servera.yml---user: user2编辑 playbook
t@workstation:~/ansible$ vim test.yml it@workstation:~/ansible$ cat test.yml---- name: Create User hosts: servera tasks: - name: Create a user named {{ user }} user: name: "{{ user }}"运行 playbook
it@workstation:~/ansible$ vim test.yml it@workstation:~/ansible$ ansible-playbook test.yml BECOME password: PLAY
主机组变量编辑主机清单文件,通过
it@workstation:~/ansible$ vim hosts it@workstation:~/ansible$ cat hostsserverb
it@workstation:~/ansible$ rm host_vars/servera.yml编辑 playbook
it@workstation:~/ansible$ vim test.yml it@workstation:~/ansible$ cat test.yml---- name: Create User hosts: web tasks: - name: Create a user named {{ user }} user: name: "{{ user }}"运行 playbook
it@workstation:~/ansible$ ansible-playbook test.yml BECOME password: PLAY
同样,你也可以通过组变量文件目录(group_vars)定义主机组变量文件
更改主机清单,删除前面创建的主机变量
t@workstation:~/ansible$ vim hostsit@workstation:~/ansible$ cat hostsserverb
it@workstation:~/ansible$ mkdir group_varsit@workstation:~/ansible$ vim group_vars/web.ymlit@workstation:~/ansible$ cat group_vars/web.yml---user: user4创建 playbook
it@workstation:~/ansible$ vim test.yml it@workstation:~/ansible$ cat test.yml---- name: Create User hosts: web tasks: - name: Create a user named {{ user }} user: name: "{{ user }}"运行 playbook
it@workstation:~/ansible$ ansible-playbook test.yml BECOME password: PLAY
后面会分享更多ansible、k8s、docker等方面内容,感兴趣的朋友可以关注下!
*特别声明:本文为【怕水的鱼】投稿,仅代表作者观点。马哥教育仅提供信息发布平台。