一、ansible-playbook 字符串分割 和 默认变量 的脚本
---
- hosts: all
remote_user: root
gather_facts: no #不采集对方机器的数据,提高执行速度
ignore_unreachable: true
tasks:
- name: 预先设定个变量
set_fact:
hostname1: "node-12-34-56-alysh-g1.saicmotor.com"
- name: 将客户端的java进程数注册为变量
set_fact:
name_tmp1: "serena_default_value"
- name: test 1
debug:
msg: "打印变量hostname1 {
{ hostname1 }}"
run_once: true
- name: 应当得到值alysh。这是一个分割字符串的操作
set_fact:
host_suffix: "{
{hostname1.split('.')[0].split('-')[4] }}"
- name: print suffix
debug:
var: host_suffix
- name: 如果执行playbook时没指定-e_双引号name=serena双引号,则选取脚本里准备的默认变量name_tmp1的值
debug:
msg: "hehe, {
{ name | default(name_tmp1, boolean=true)}}"
二、执行结果如下
[root@salt-master testansible]# ansible-playbook -i iplist a.yml -e "name=serena_haha"
[WARNING]: Found variable using reserved name: name
PLAY [all] **********************************************************************************************************************************************************************************************
TASK [预先设定个变量] ******************************************************************************************************************************************************************************************
ok: [10.100.100.20]
ok: [10.100.100.30]
ok: [10.100.100.50]
ok: [10.100.100.40]
TASK [将客户端的java进程数注册为变量] ********************************************************************************************************************************************************************************
ok: [10.100.100.20]
ok: [10.100.100.30]
ok: [10.100.100.50]
ok: [10.100.100.40]
TASK [test 1] *******************************************************************************************************************************************************************************************
ok: [10.100.100.20] => {
"msg": "打印变量hostname1 node-12-34-56-alysh-g1.saicmotor.com"
}
TASK [应当得到值alysh。这是一个分割字符串的操作] **************************************************************************************************************************************************************************
ok: [10.100.100.50]
ok: [10.100.100.20]
ok: [10.100.100.30]
ok: [10.100.100.40]
TASK [print suffix] *************************************************************************************************************************************************************************************
ok: [10.100.100.50] => {
"host_suffix": "alysh"
}
ok: [10.100.100.40] => {
"host_suffix": "alysh"
}
ok: [10.100.100.20] => {
"host_suffix": "alysh"
}
ok: [10.100.100.30] => {
"host_suffix": "alysh"
}
TASK [如果执行playbook时没指定-e_双引号name=serena双引号,则选取脚本里准备的默认变量name_tmp1的值] ************************************************************************************************************************************
ok: [10.100.100.30] => {
"msg": "hehe, serena_haha"
}
ok: [10.100.100.20] => {
"msg": "hehe, serena_haha"
}
ok: [10.100.100.50] => {
"msg": "hehe, serena_haha"
}
ok: [10.100.100.40] => {
"msg": "hehe, serena_haha"
}
PLAY RECAP **********************************************************************************************************************************************************************************************
10.100.100.20 : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
10.100.100.30 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
10.100.100.40 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
10.100.100.50 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
---------答应我别做运维这一行--------2023年6月6日23:56:56----------