Custom Grains Salt

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