我使用了我自己制作的saltstack-minion的docker镜像,进行saltstack自动实现系统初始化。

PS:处理过程中发现docker的ntpd 是无法更新时间的。需要映射宿主的时间,使用docker -v参数。

docker获取方法:

docker pull docker.io/516249940/saltsatack-minion

系统初始化过程:每一个sls文件测试一遍 >> 然后写入到初始化目录的sls >> 最后加入到top.sls

#vim /etc/salt/master   
file_roots:
  base:
    - /srv/salt/base
  prod:
    - /srv/salt/prod
#分别创建yum.sls
#vim /srv/salt/base/init/yum.sls
[root@salt-master init]# cat yum.sls
yum-list-init:
  pkg.installed:
    - names:
      - gcc
      - gcc-c++
      - man
      - vim-enhanced
      - wget
      - telnet
      - lsof
      - sysstat
      - openssh-clients
      - lrzsz
      - tree
      - hdparm
[root@salt-master init]# cat dns.sls 
/etc/resolv.conf:

  file.managed:

    - source: salt://init/config/resolv.conf

    - user: root

    - group: root

    - mode: 644
    - backup: '*'
[root@salt-master init]# cat cron.sls 
ntpdate-init:
  pkg.installed:
    - name: ntpdate

crontab-init:
  pkg.installed:
    - name: crontabs
  cmd.run:
    - name: /etc/init.d/crond restart
   

set-crontab:
  cron.present:
    - name: /usr/bin/ntpdate times.aliyun.com >> /dev/null 2>&1
    - user: root
    - minute: '*5'
    - require:
      - pkg: ntpdate-init
      - pkg: crontab-init
#再创建一个/srv/salt/base/init/env_init.sls
[root@salt-master init]# cat env_init.sls 
include:
  - init.dns
  - init.cron
  - init.yum
最后创建top.sls
[root@salt-master base]# cat top.sls 
base:
  '*minion*':                  #匹配id含有minion的主机
    - init.env_init
[root@salt-master base]# salt-key 
Accepted Keys:
docker-minion01
docker-minion02
hddcluster1
hddcluster2
hddcluster3
hddcluster4
salt-master
salt-minion01
Denied Keys:
Unaccepted Keys:
Rejected Keys:
分别执行下面命令测试上面的编写的文件
salt 'docker-minion0*' state.sls init.yum test=true
salt 'docker-minion0*' state.sls init.dns test=true
salt 'docker-minion0*' state.sls init.cron test=true
全部通过测试
最后测试top.sls
[root@salt-master base]# salt 'docker-minion0*'   state.highstate test=True
docker-minion02:
----------
          ID: /etc/resolv.conf
    Function: file.managed
      Result: True
     Comment: The file /etc/resolv.conf is in the correct state
     Started: 11:00:15.272191
    Duration: 16.812 ms
     Changes:   
----------
          ID: ntpdate-init
    Function: pkg.installed
        Name: ntpdate
      Result: True
     Comment: Package ntpdate is already installed
     Started: 11:00:16.425816
    Duration: 504.677 ms
     Changes:   
----------
          ID: crontab-init
    Function: pkg.installed
        Name: crontabs
      Result: True
     Comment: Package crontabs is already installed
     Started: 11:00:16.930610
    Duration: 0.357 ms
     Changes:   
----------
          ID: crontab-init
    Function: cmd.run
        Name: /etc/init.d/crond restart
      Result: None
     Comment: Command "/etc/init.d/crond restart" would have been executed
     Started: 11:00:16.931733
    Duration: 0.254 ms
     Changes:   
----------
          ID: set-crontab
    Function: cron.present
        Name: /usr/bin/ntpdate times.aliyun.com >> /dev/null 2>&1
      Result: True
     Comment: Cron /usr/bin/ntpdate times.aliyun.com >> /dev/null 2>&1 already present
     Started: 11:00:16.932840
    Duration: 253.346 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: gcc
      Result: True
     Comment: Package gcc is already installed
     Started: 11:00:17.186312
    Duration: 0.422 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: lrzsz
      Result: True
     Comment: Package lrzsz is already installed
     Started: 11:00:17.186803
    Duration: 0.285 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: lsof
      Result: True
     Comment: Package lsof is already installed
     Started: 11:00:17.187151
    Duration: 0.287 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: tree
      Result: True
     Comment: Package tree is already installed
     Started: 11:00:17.187501
    Duration: 0.277 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: openssh-clients
      Result: True
     Comment: Package openssh-clients is already installed
     Started: 11:00:17.187840
    Duration: 0.275 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: telnet
      Result: True
     Comment: Package telnet is already installed
     Started: 11:00:17.188176
    Duration: 0.288 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: hdparm
      Result: True
     Comment: Package hdparm is already installed
     Started: 11:00:17.188528
    Duration: 0.274 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: sysstat
      Result: True
     Comment: Package sysstat is already installed
     Started: 11:00:17.188865
    Duration: 0.272 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: wget
      Result: True
     Comment: Package wget is already installed
     Started: 11:00:17.189199
    Duration: 0.28 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: man
      Result: True
     Comment: Package man is already installed
     Started: 11:00:17.189542
    Duration: 0.272 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: gcc-c++
      Result: True
     Comment: Package gcc-c++ is already installed
     Started: 11:00:17.189876
    Duration: 0.272 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: vim-enhanced
      Result: True
     Comment: Package vim-enhanced is already installed
     Started: 11:00:17.190211
    Duration: 0.291 ms
     Changes:   

Summary for docker-minion02
-------------
Succeeded: 17 (unchanged=1)
Failed:     0
-------------
Total states run:     17
Total run time:  778.941 ms
docker-minion01:
----------
          ID: /etc/resolv.conf
    Function: file.managed
      Result: True
     Comment: The file /etc/resolv.conf is in the correct state
     Started: 11:00:15.249261
    Duration: 34.726 ms
     Changes:   
----------
          ID: ntpdate-init
    Function: pkg.installed
        Name: ntpdate
      Result: True
     Comment: Package ntpdate is already installed
     Started: 11:00:16.442680
    Duration: 501.913 ms
     Changes:   
----------
          ID: crontab-init
    Function: pkg.installed
        Name: crontabs
      Result: True
     Comment: Package crontabs is already installed
     Started: 11:00:16.944708
    Duration: 0.357 ms
     Changes:   
----------
          ID: crontab-init
    Function: cmd.run
        Name: /etc/init.d/crond restart
      Result: None
     Comment: Command "/etc/init.d/crond restart" would have been executed
     Started: 11:00:16.945815
    Duration: 0.255 ms
     Changes:   
----------
          ID: set-crontab
    Function: cron.present
        Name: /usr/bin/ntpdate times.aliyun.com >> /dev/null 2>&1
      Result: True
     Comment: Cron /usr/bin/ntpdate times.aliyun.com >> /dev/null 2>&1 already present
     Started: 11:00:16.946927
    Duration: 258.464 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: gcc
      Result: True
     Comment: Package gcc is already installed
     Started: 11:00:17.205522
    Duration: 0.496 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: lrzsz
      Result: True
     Comment: Package lrzsz is already installed
     Started: 11:00:17.206094
    Duration: 0.317 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: lsof
      Result: True
     Comment: Package lsof is already installed
     Started: 11:00:17.206480
    Duration: 0.283 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: tree
      Result: True
     Comment: Package tree is already installed
     Started: 11:00:17.206848
    Duration: 0.281 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: openssh-clients
      Result: True
     Comment: Package openssh-clients is already installed
     Started: 11:00:17.207192
    Duration: 0.313 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: telnet
      Result: True
     Comment: Package telnet is already installed
     Started: 11:00:17.207570
    Duration: 0.273 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: hdparm
      Result: True
     Comment: Package hdparm is already installed
     Started: 11:00:17.207906
    Duration: 0.275 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: sysstat
      Result: True
     Comment: Package sysstat is already installed
     Started: 11:00:17.208242
    Duration: 0.279 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: wget
      Result: True
     Comment: Package wget is already installed
     Started: 11:00:17.208584
    Duration: 0.272 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: man
      Result: True
     Comment: Package man is already installed
     Started: 11:00:17.208917
    Duration: 0.271 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: gcc-c++
      Result: True
     Comment: Package gcc-c++ is already installed
     Started: 11:00:17.209248
    Duration: 0.279 ms
     Changes:   
----------
          ID: yum-list-init
    Function: pkg.installed
        Name: vim-enhanced
      Result: True
     Comment: Package vim-enhanced is already installed
     Started: 11:00:17.209589
    Duration: 0.278 ms
     Changes:   

Summary for docker-minion01
-------------
Succeeded: 17 (unchanged=1)
Failed:     0
-------------
Total states run:     17
Total run time:  799.332 ms
[root@salt-master base]#
最后一步初始化系统:
salt 'docker-minion0*'   state.highstate


写着写着发觉自己的写作水平真差劲········