2016-10-17 91 views
1

代替我如何與IP地址的最後三個數字代替主機名:ansible主機用三個數字IP

例子:

IP: 192.168.0.1 
Hostname: webserver001 

我想我的主機是基於過去三年頂替數字的IP地址,但我得到的是webserver1而不是webserver001,我該如何填充前導零。

下面是我使用的代碼。

- hostname: name={{ hostname.replace('*', ansible_all_ipv4_addresses[0].split('.')[3]) }} 

回答

1

我認爲使用format過濾器,與int過濾器一起,允許以零填充號碼,你想要的是

name={{ "webserver%03d"|format(ansible_default_ipv4.address.split(".")[3]|int) }} 

爲例與test.yml

- hosts: localhost 
    tasks: 
    - name: test jinja capabilities 
     debug: msg={{ "webserver%03d"|format(ansible_default_ipv4.address.split(".")[2]|int) }} 

運行時,它給

$ ansible-playbook -i localhost, test.yml  

PLAY  *************************************************************************** 

TASK [setup]  ******************************************************************* 
ok: [localhost] 

TASK [test jinja capabilities] ************************************************* 
ok: [localhost] => { 
    "msg": "webserver001" 
} 

PLAY RECAP ********************************************************************* 
localhost     : ok=2 changed=0 unreachable=0  failed=0 

具有IP 127.0.0.1本地主機。

+0

感謝您的大力幫助..非常感謝它..這完全符合預期。 – Raxso