Saltstack之Masterless及Master高可用架构

1.Salt Masterless快速入门

  • Stand up a master server via States (Salting a Salt Master)  用来配置一个master 如yum install xxx
  • Use salt-call commands on a system without connectivity to a master  本地使用salt管理 不用master也能跑
  • Masterless States, run states entirely from files local to the minion   完全从本地运行一个状态

2.没有mster配置

 [root@linux-node2 ~]# vim /etc/salt/minion
#master: 118.190.201.11
file_client: local
file_roots:
  base:
    - /srv/salt/
pillar_roots:
  base:
    - /srv/pillar

3.不需要salt-minion服务

 [root@linux-node2 ~]# systemctl stop salt-minion.service

4.执行状态

 [root@linux-node2 ~]# salt-call --local cmd.run 'uptime'
[INFO ] Executing command 'uptime' in directory '/root'
local:
 02:01:19 up 5 days, 13:49, 1 user, load average: 0.09, 0.03, 0.05
 [root@linux-node2 ~]# mkdir /srv/salt/
 [root@linux-node2 ~]# cd /srv/salt/
 [root@linux-node2 ~]# vim /srv/salt/demo.sls 
pkg-install:
  pkg.installed:
    - pkgs:
      - wget
      - screen
      - nmap

5.执行结果

 [root@linux-node2 ~]# salt-call --local state.sls demo
[INFO ] Loading fresh modules for state activity
[INFO ] Fetching file from saltenv 'base', ** done ** 'demo.sls'
[INFO ] Running state [pkg-install] at time 02:09:36.864720
[INFO ] Executing state pkg.installed for pkg-install
[INFO ] Executing command ['rpm', '-qa', '--queryformat', '%{NAME}_|-%{EPOCH}_|-%{VERSION}_|-%{RELEASE}_|-%{ARCH}_|-(none)\n'] in directory '/root'
[INFO ] All specified packages are already installed.
[INFO ] Completed state [pkg-install] at time 02:09:39.642429
local:
----------
 ID: pkg-install
 Function: pkg.installed
 Result: True
 Comment: All specified packages are already installed.
 Started: 02:09:36.864720
 Duration: 2777.709 ms
 Changes: 

Summary
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1

6.top_file文件

 [root@linux-node2 ~]# vim /srv/salt/top.sls
base:
  '*':
    - demo
 [root@linux-node2 ~]# salt-call --local state.highstate
[INFO ] Loading fresh modules for state activity
[INFO ] Fetching file from saltenv 'base', ** done ** 'top.sls'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/beacons'
[INFO ] Syncing beacons for environment 'base'
[INFO ] Loading cache from salt://_beacons, for base)
[INFO ] Caching directory '_beacons/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/modules'
[INFO ] Syncing modules for environment 'base'
[INFO ] Loading cache from salt://_modules, for base)
[INFO ] Caching directory '_modules/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/states'
[INFO ] Syncing states for environment 'base'
[INFO ] Loading cache from salt://_states, for base)
[INFO ] Caching directory '_states/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/sdb'
[INFO ] Syncing sdb for environment 'base'
[INFO ] Loading cache from salt://_sdb, for base)
[INFO ] Caching directory '_sdb/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/grains'
[INFO ] Syncing grains for environment 'base'
[INFO ] Loading cache from salt://_grains, for base)
[INFO ] Caching directory '_grains/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/renderers'
[INFO ] Syncing renderers for environment 'base'
[INFO ] Loading cache from salt://_renderers, for base)
[INFO ] Caching directory '_renderers/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/returners'
[INFO ] Syncing returners for environment 'base'
[INFO ] Loading cache from salt://_returners, for base)
[INFO ] Caching directory '_returners/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/output'
[INFO ] Syncing output for environment 'base'
[INFO ] Loading cache from salt://_output, for base)
[INFO ] Caching directory '_output/' for environment 'base'
[INFO ] Creating module dir '/var/cache/salt/minion/extmods/utils'
[INFO ] Syncing utils for environment 'base'
[INFO ] Loading cache from salt://_utils, for base)
[INFO ] Caching directory '_utils/' for environment 'base'
[INFO ] Loading fresh modules for state activity
[INFO ] Fetching file from saltenv 'base', ** skipped ** latest already in cache 'salt://demo.sls'
[INFO ] Running state [pkg-install] at time 02:15:37.831641
[INFO ] Executing state pkg.installed for pkg-install
[INFO ] Executing command ['rpm', '-qa', '--queryformat', '%{NAME}_|-%{EPOCH}_|-%{VERSION}_|-%{RELEASE}_|-%{ARCH}_|-(none)\n'] in directory '/root'
[INFO ] All specified packages are already installed.
[INFO ] Completed state [pkg-install] at time 02:15:40.548441
local:
----------
 ID: pkg-install
 Function: pkg.installed
 Result: True
 Comment: All specified packages are already installed.
 Started: 02:15:37.831641
 Duration: 2716.8 ms
 Changes: 

Summary
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1

7.Master高可用架构

官方文档:https://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html

 [root@linux-node2 ~]# yum install -y salt-master
.......省略部分.......
Running transaction
 Installing : salt-master-2015.5.10-2.el7.noarch 1/1 
 Verifying : salt-master-2015.5.10-2.el7.noarch 1/1 

Installed:
 salt-master.noarch 0:2015.5.10-2.el7 

Complete!
####node2节点minion配置
 [root@linux-node2 ~]# hostname -I
118.190.201.12
 [root@linux-node2 ~]# vim /etc/salt/minion
master: 
  - 118.190.201.11
  - 118.190.201.12
###master配置需要统一
 [root@linux-node1 ~]# scp -P 22 /etc/salt/master 118.190.201.12:/etc/salt/
###master,minion的key必须是一样的
 [root@linux-node1 ~]# cd /etc/salt/pki/
###file_roots与file_pillar需要一致
 [root@linux-node1 /etc/salt/pki]# cd /srv/pillar/
###使用nfs进行挂载
 [root@linux-node1 ~]# yum install -y nfs-utils rpcbind
 [root@linux-node1 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-44.el7.x86_64
nfs-utils-1.3.0-0.54.el7.x86_64
####启动rpcbind服务
 [root@linux-node1 ~]# systemctl start rpcbind.service
 [root@linux-node1 ~]# systemctl start nfs.service
 [root@linux-node1 ~]# systemctl enable rpcbind.service 
 [root@linux-node1 ~]# systemctl enable nfs.service
####挂载
 [root@linux-node1 ~]# vim /etc/exports
/etc/salt/pki 118.190.201.0/24(rw,sync)
/srv/pillar 118.190.201.0/24(rw,sync)
####平滑重启
 [root@linux-node1 ~]# systemctl reload nfs
 [root@linux-node1 ~]# showmount -e localhost
Export list for localhost:
/srv/pillar 118.190.201.0/24
/etc/salt/pki 118.190.201.0/24
###本地测试
 [root@linux-node1 ~]# mount -t nfs 118.190.201.11:/srv/pillar /mnt
 [root@linux-node1 ~]# cd /mnt/
 [root@linux-node1 /mnt]# ll
total 0
drwxr-xr-x 2 root root 54 Oct 23 2017 base
drwxr-xr-x 2 root root 6 Oct 19 01:47 prod
###node2节点操作
mkdir /srv/pillar
yum install -y rpcbind
systemctl start rpcbind
yum install -y nfs-utils
systemctl start nfs
mount -t nfs 118.190.201.11:/srv/pillar /srv/pillar
mount -t nfs 118.190.201.11:/etc/salt/pki /etc/salt/pki
0
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到