theoforce 发表于 2018-8-1 07:06:57

saltstack自动部署apache实例

  1、配置pillar的top.sls:
  base:
  nova:
  - match: nodegroup
  - nova
  neutron:
  - match: nodegroup
  - neutron
  2、pillar的nova和neutron的配置:
  apache:
  name: httpd
  ip: 172.16.171.120
  root: /var/www/neutron
  apache:
  name: httpd
  ip: 172.16.171.110
  root: /var/www/nova
  3、配置state的top.sls:
  base:
  '*':
  - apache.start
  - apache.stop
  4、配置apache.start:
  apache.start:
  pkg.installed:
  - name: {{ pillar['apache']['name'] }}
  service.running:
  - name: {{ pillar['apache']['name'] }}
  - watch:
  - pkg: {{ pillar['apache']['name'] }}
  - file: /etc/httpd/conf/httpd.conf
  - user: apache
  user.present:
  - name: apache
  - shell: /sbin/nologin
  - home: {{ pillar['apache']['root'] }}
  - require:
  - group: apache
  group.present:
  - name: apache
  - require:
  - pkg: {{ pillar['apache']['name'] }}
  file.managed:
  - name: /etc/httpd/conf/httpd.conf
  - source: salt://apache/httpd.conf
  - user: root
  - group: root
  - mode: 644
  - template: jinja                        注:必须指定,否则httpd.conf中的pillar变量无法替换。
  {{ pillar['apache']['root'] }}/new:
  file.directory:
  - file_mode: 640
  - dir_mode: 750
  {{ pillar['apache']['root'] }}/test/process.sh:
  file.managed:
  - source: salt://apache/process.sh
  - makedirs: True
  4、配置apache.stop:
  apache.stop:
  pkg.removed:
  - name: {{ pillar['apache']['name'] }}
  - require:
  - service: {{ pillar['apache']['name'] }}
  service.dead:
  - name: {{ pillar['apache']['name'] }}
  user.absent:
  - name: apache
  - purge: True
  - require:
  - pkg: {{ pillar['apache']['name'] }}
  5、在httpd.conf配置文件中指定:
  Listen {{ pillar['apache']['ip'] }}:80
  DocumentRoot {{ pillar['apache']['root'] }}
  6、如果在httpd.conf中不指定pillar变量,直接指定自定义变量名,即如下:
  Listen ` addr `:80
  DocumentRoot ` dir `
  7、即可在apache.start指定defaults或context,具体如下:
  apache.start:
  pkg.installed:
  - name: {{ pillar['apache']['name'] }}
  service.running:
  - name: {{ pillar['apache']['name'] }}
  - watch:
  - pkg: {{ pillar['apache']['name'] }}
  - file: /etc/httpd/conf/httpd.conf
  - user: apache
  user.present:
  - name: apache
  - shell: /sbin/nologin
  - home: {{ pillar['apache']['root'] }}   或者   {{ salt['pillar']('apache:root','/var/www/html') }}
  - require:
  - group: apache
  group.present:
  - name: apache
  - require:
  - pkg: {{ pillar['apache']['name'] }}
  file.managed:
  - name: /etc/httpd/conf/httpd.conf
  - source: salt://apache/httpd.conf
  - user: root
  - group: root
  - mode: 644
  - template: jinja
  - context:
  addr: {{ pillar['apache']['ip'] }}    或者   {{ salt['pillar']('apache:ip','0.0.0.0') }}
  dir: {{ pillar['apache']['root'] }}   或者   {{ salt['pillar']('apache:root','/var/www/html') }}
  注:后者可以指定个默认值,当个另minion没定义时,可以使用默认值,而不会出现执行异常。
页: [1]
查看完整版本: saltstack自动部署apache实例