首先定义pillar

[root@web1 pillar]# cat hostname.sls
ip_hostname:
10.1.1.1: web1
10.1.1.2: web2
10.1.1.3: mysql1
10.1.1.4: redis1
10.1.1.5: tomcat1
10.1.1.6: dubbo1
10.1.1.7: zabbix1

在top.sls中调用

[root@web1 pillar]# cat top.sls
base:
'*':
- hostname

编写状态模块,根据ip通过pillar判断对应的主机名。

[root@web1 base]# cat set-hostname.sls
{% set ip = salt['network.interface_ip']('eth1') %}
alter_hostname:
cmd.run:
- name: hostnamectl set-hostname {{ pillar['ip_hostname'][ip] }}

测试执行

[root@web1 base]# salt-ssh  '*' state.sls set-hostname  test=True
tomcat1:
----------
ID: alter_hostname
Function: cmd.run
Name: hostnamectl set-hostname tomcat1
Result: None
Comment: Command "hostnamectl set-hostname tomcat1" would have been executed
Started: ::50.085925
Duration: 0.949 ms
Changes: Summary for tomcat1
------------
Succeeded: (unchanged=)
Failed:
------------
Total states run:
Total run time: 0.949 ms
web1:
----------
ID: alter_hostname
Function: cmd.run
Name: hostnamectl set-hostname web1
Result: None
Comment: Command "hostnamectl set-hostname web1" would have been executed
Started: ::53.455021
Duration: 0.814 ms
Changes: Summary for web1
------------
Succeeded: (unchanged=)
Failed:
------------
Total states run:
Total run time: 0.814 ms
dubbo1:
----------
ID: alter_hostname
Function: cmd.run
Name: hostnamectl set-hostname dubbo1
Result: None
Comment: Command "hostnamectl set-hostname dubbo1" would have been executed
Started: ::51.212502
Duration: 0.817 ms
Changes: Summary for dubbo1
------------
Succeeded: (unchanged=)
Failed:
------------
Total states run:
Total run time: 0.817 ms
mysql1:
----------
ID: alter_hostname
Function: cmd.run
Name: hostnamectl set-hostname mysql1
Result: None
Comment: Command "hostnamectl set-hostname mysql1" would have been executed
Started: ::50.058353
Duration: 7.89 ms
Changes: Summary for mysql1
------------
Succeeded: (unchanged=)
Failed:
------------
Total states run:
Total run time: 7.890 ms
web2:
----------
ID: alter_hostname
Function: cmd.run
Name: hostnamectl set-hostname web2
Result: None
Comment: Command "hostnamectl set-hostname web2" would have been executed
Started: ::51.869016
Duration: 0.85 ms
Changes: Summary for web2
------------
Succeeded: (unchanged=)
Failed:
------------
Total states run:
Total run time: 0.850 ms
zabbix:
----------
ID: alter_hostname
Function: cmd.run
Name: hostnamectl set-hostname zabbix1
Result: None
Comment: Command "hostnamectl set-hostname zabbix1" would have been executed
Started: ::53.615229
Duration: 0.856 ms
Changes: Summary for zabbix
------------
Succeeded: (unchanged=)
Failed:
------------
Total states run:
Total run time: 0.856 ms
redis1:
----------
ID: alter_hostname
Function: cmd.run
Name: hostnamectl set-hostname redis1
Result: None
Comment: Command "hostnamectl set-hostname redis1" would have been executed
Started: ::53.801096
Duration: 0.857 ms
Changes: Summary for redis1
------------
Succeeded: (unchanged=)
Failed:
------------
Total states run:
Total run time: 0.857 ms
05-14 16:43