Salt hadir dengan interface yang digunakan untuk memperoleh informasi tentang Sistem Operasi. Ini disebut interface Grains.
Grains mengumpulkan butiran informasi seperti operating system, domain name, IP address, kernel, OS type, memory dan banyak informasi lainnya
Implementasi #
Bayangkan jika kita memilki ratusan atau bahkan ribuan server yang tersebar pada beberapa Datacenter dan sudah di install Salt
Namun sebagai Administrator ingin melakukan esekusi perintah pada server Minion yang ada pada datacenter A atau B saja, mungkin akan cukup repot jika harus esekusi salt satu per satu.
Jadi kita akan kelompokan server tersebut sesuai datacenter dengan cara mendefinisikan grains
List all available grains #
salt 'targetminion' grains.ls
root@saltmaster:~# salt saltminion.srv1.de grains.ls
saltminion.srv1.de:
- biosreleasedate
- biosversion
- cpu_flags
- cpu_model
- cpuarch
- cwd
- disks
- dns
...
Cek grains item #
Contoh apabila ingin cek IP menggunakan grains
salt 'targetminion' grains.item ipv4
root@saltmaster:~# salt saltminion.srv1.de grains.item ipv4
saltminion.srv1.de:
----------
ipv4:
- 127.0.0.1
- 172.13.13.239
Atau bisa cek semua grains item dengan perintah berikut
salt '*' grains.items
Add custom grains #
Untuk menambahkan custom grains gunakan perintah berikut
salt 'targetminion' grains.append key val
root@saltmaster:~# salt saltminion.srv1.de grains.append datacenter us1-east
saltminion.srv1.de:
----------
datacenter:
- us1-east
Setelah itu cek file grains pada server Minion
root@saltminion:~# cat /etc/salt/grains
datacenter:
- us1-east
Test custom grains #
Test ping semua server yang ada pada datacenter us1-east untuk memastikan minion aktif dan merespon
salt -G 'datacenter:us1-east' test.ping
root@saltmaster:~# salt -G 'datacenter:us1-east' test.ping
saltminion.srv1.de:
True
Delete grains item #
Misal ingin menghapus grains item
salt '*' grains.delkey key
root@saltmaster:~# salt saltminion.srv1.de grains.item roles
saltminion.srv1.de:
----------
roles:
- webserver
root@saltmaster:~# salt saltminion.srv1.de grains.delkey roles force=True
saltminion.srv1.de:
----------
changes:
----------
roles:
None
comment:
result:
True
List minion dengan grains #
root@saltmaster:~# salt '*' grains.get datacenter
saltminion.srv1.de:
- us1-east
Hapus value grains item #
salt '*' grains.remove key val
root@saltmaster:~# salt saltminion.srv1.de grains.remove datacenter us1-east
saltminion.srv1.de:
----------
datacenter:
Setting value dan multi value grains item #
salt '*' grains.setval key val
root@saltmaster:~# salt saltminion.srv1.de grains.setval roles sharedhost
saltminion.srv1.de:
----------
roles:
sharedhost
root@saltmaster:~# salt saltminion.srv1.de grains.setval roles ['sharedhost','vps','mining']
saltminion.srv1.de:
----------
roles:
- sharedhost
- vps
- mining