天天看点

saltstack的探索-安装vim、nginx服务和配置、自定义脚本

saltstack的探索-安装vim、nginx服务和配置、自定义脚本

<code>1. 配置minion</code>

<code>首先,移除原来的测试minion</code>

<code>[root@svr200-21 bin]</code><code># salt-key -d test230</code>

<code>The following keys are going to be deleted:</code>

<code>Accepted Keys:</code>

<code>test230</code>

<code>Proceed? [N</code><code>/y</code><code>] y</code>

<code>Key </code><code>for</code> <code>minion test230 deleted.</code>

<code>新增minion:</code>

<code>【svr205-2】</code>

<code>[root@svr205-2 ~]</code><code># yum install salt-minion -y</code>

<code>[root@svr205-2 ~]</code><code># vim /etc/salt/minion</code>

<code>master: 10.0.200.21</code>

<code>id</code><code>: svr205-2</code>

<code>或则,使用脚本来更改配置:</code>

<code>[root@svr205-2 ~]</code><code>#  cp -a /etc/salt/minion /etc/salt/minion.bak &amp;&amp; s_ip=10.0.200.21 &amp;&amp; s_host=$(hostname) &amp;&amp; sed -i -e "s/#master: salt/master: ${s_ip}/"  -e "s/#id:/id: ${s_host}/" /etc/salt/minion &amp;&amp; cat /etc/salt/minion |grep ^[^#]</code>

<code>[root@svr205-2 ~]</code><code># service salt-minion start</code>

<code>Starting salt-minion daemon:                               [  OK  ]</code>

<code>【svr205-2, 3, 4, 5类似】同上</code>

<code>2. 配置master和minion的key</code>

<code>[root@svr200-21 bin]</code><code># salt-key -L</code>

<code>Unaccepted Keys:</code>

<code>svr205-2</code>

<code>svr205-3</code>

<code>svr205-4</code>

<code>svr205-5</code>

<code>Rejected Keys:</code>

<code>[root@svr200-21 bin]</code><code># salt-key -a svr205*</code>

<code>The following keys are going to be accepted:</code>

<code>Proceed? [n</code><code>/Y</code><code>] y</code>

<code>Key </code><code>for</code> <code>minion svr205-2 accepted.</code>

<code>Key </code><code>for</code> <code>minion svr205-3 accepted.</code>

<code>Key </code><code>for</code> <code>minion svr205-4 accepted.</code>

<code>Key </code><code>for</code> <code>minion svr205-5 accepted.</code>

<code>测试:</code>

<code>[root@svr200-21 salt]</code><code># salt 'svr205-*' test.ping</code>

<code>svr205-3:</code>

<code>    </code><code>True</code>

<code>svr205-2:</code>

<code>svr205-5:</code>

<code>svr205-4:</code>

<code>3. 配置管理-同步vim配置</code>

<code>[root@svr200-21 salt]</code><code># pwd</code>

<code>/srv/salt</code>

<code>[root@svr200-21 salt]</code><code># cat edit/vim.sls </code>

<code>vim-enhanced:</code>

<code>    </code><code>pkg.installed: []</code>

<code>/root/</code><code>.vimrc:</code>

<code>    </code><code>file</code><code>.managed:</code>

<code>        </code><code>- </code><code>source</code><code>: salt:</code><code>//edit/conf/vimrc</code>

<code>        </code><code>- mode: 644</code>

<code>        </code><code>- uesr: root</code>

<code>        </code><code>- group: root</code>

<code>[root@svr200-21 salt]</code><code># ls edit/conf/</code>

<code>vimrc</code>

<code>[root@svr200-21 salt]</code><code># salt 'svr205-*' state.sls edit.vim</code>

<code>##########################################################################</code>

<code>略</code>

<code>4. 远程执行-在4台主机上执行脚本lvs-realsvr,并加入开机启动。</code>

<code>启动脚本:</code>

<code>[root@svr200-21 salt]</code><code># cat lvs/real/start.sls </code>

<code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/lvs-realsvr</code><code>:</code>

<code>  </code><code>file</code><code>.managed:</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//lvs/bin/lvs-realsvr</code><code>.sh</code>

<code>    </code><code>- mode: 755</code>

<code>lvs-realsvr:</code>

<code>  </code><code>cmd.run:</code>

<code>    </code><code>- require:</code>

<code>      </code><code>- </code><code>file</code><code>: </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/lvs-realsvr</code>

<code>    </code><code>- name: service lvs-realsvr start &amp;&amp; chkconfig lvs-realsvr on</code>

<code>关闭脚本:</code>

<code>[root@svr200-21 salt]</code><code># cat lvs/real/stop.sls </code>

<code>    </code><code>- name: service lvs-realsvr stop &amp;&amp; chkconfig lvs-realsvr off</code>

<code>控制脚本:</code>

<code>[root@svr200-21 salt]</code><code># cat lvs/bin/lvs-realsvr.sh </code>

<code>#!/bin/bash</code>

<code># </code>

<code># 2015/2/28</code>

<code># lvs real server</code>

<code>#</code>

<code># chkconfig:   - 85 15</code>

<code># description:  control vip on lvs realserver </code>

<code># Source function library.</code>

<code>. </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>

<code># Source networking configuration.</code>

<code>. </code><code>/etc/sysconfig/network</code>

<code># Check that networking is up.</code>

<code>[ </code><code>"$NETWORKING"</code> <code>= </code><code>"no"</code> <code>] &amp;&amp; </code><code>exit</code> <code>0</code>

<code>lockfile=</code><code>"/var/lock/subsys/lvs-real"</code>

<code>  </code> 

<code>s_vip=</code><code>'10.0.205.100'</code>

<code>start() {</code>

<code>  </code><code>ifconfig</code> <code>lo:1 ${s_vip} netmask 255.255.255.255 broadcast ${s_vip}</code>

<code>  </code><code>route add -host ${s_vip} dev lo:1</code>

<code>  </code><code>echo</code> <code>1 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_ignore</code>

<code>  </code><code>echo</code> <code>2 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_announce</code>

<code>  </code><code>echo</code> <code>1 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_ignore</code>

<code>  </code><code>echo</code> <code>2 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_announce</code>

<code>  </code><code>retval=$?</code>

<code>  </code><code>echo</code>

<code>  </code><code>[ $retval -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>touch</code> <code>$lockfile</code>

<code>  </code><code>return</code> <code>$retval</code>

<code>}</code>

<code>stop() {</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_ignore</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_announce</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_ignore</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_announce</code>

<code>  </code><code>ifconfig</code> <code>lo:1 down</code>

<code>  </code><code>route del -host ${s_vip}</code>

<code>  </code><code>[ $retval -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>rm</code> <code>-f $lockfile</code>

<code>status() {</code>

<code>  </code><code>ip a |</code><code>grep</code> <code>inet |</code><code>grep</code> <code>-</code><code>v</code> <code>inet6  </code>

<code>case</code> <code>$1 </code><code>in</code>  

<code>  </code><code>start)</code>

<code>    </code><code>start</code>

<code>    </code><code>status</code>

<code>    </code><code>;;</code>

<code>  </code><code>stop)</code>

<code>    </code><code>stop</code>

<code>  </code><code>status)</code>

<code>  </code><code>*)  </code>

<code>    </code><code>echo</code> <code>$</code><code>"Usage: $0 {start|stop|status}"</code>

<code>    </code><code>exit</code> <code>2 </code>

<code>esac</code>  

<code>   </code> 

<code>执行:</code>

<code>[root@svr200-21 salt]</code><code># salt 'svr205-*' state.sls lvs.real.start</code>

<code>查看minion的状态:</code>

<code>[root@svr205-2 ~]</code><code># ll /etc/init.d/lvs-realsvr </code>

<code>-rwxr-xr-x 1 root root 1252 Feb 28 05:31 </code><code>/etc/init</code><code>.d</code><code>/lvs-realsvr</code>

<code>[root@svr205-2 ~]</code><code># ip a |grep inet |grep -v inet6</code>

<code>    </code><code>inet 127.0.0.1</code><code>/8</code> <code>scope host lo</code>

<code>    </code><code>inet 10.0.205.100</code><code>/32</code> <code>brd 10.0.205.100 scope global lo:1</code>

<code>    </code><code>inet 10.0.205.2</code><code>/8</code> <code>brd 10.255.255.255 scope global eth0</code>

<code>    </code> 

<code>[root@svr200-21 salt]</code><code># salt 'svr205-*' state.sls lvs.real.stop</code>

<code>5. 配置管理-安装nginx服务,并加入开机启动。</code>

<code>[root@svr200-21 salt]</code><code># cat nginx/init.sls </code>

<code>nginx:</code>

<code>  </code><code>pkg.installed: []</code>

<code>  </code><code>service.running:</code>

<code>      </code><code>- pkg: nginx</code>

<code>    </code><code>- name: chkconfig nginx on</code>

<code>[root@svr200-21 salt]</code><code># salt 'svr205-*' state.sls nginx</code>

<code>深入一步,使用模版部署自定义的index.html,更新nginx首页,显示当前web主机的</code><code>hostname</code><code>和ip信息。</code>

<code>    </code><code>- </code><code>watch</code><code>:</code>

<code>      </code><code>- </code><code>file</code><code>: </code><code>/usr/share/nginx/html/index</code><code>.html</code>

<code>/usr/share/nginx/html/index</code><code>.html:</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//nginx/conf/index</code><code>.html</code>

<code>    </code><code>- template: jinja</code>

<code>[root@svr200-21 salt]</code><code># cat nginx/conf/index.html </code>

<code>&lt;p&gt;</code>

<code>  </code><code>HOST:   {{ grains[</code><code>'host'</code><code>] }} &lt;br /&gt;</code>

<code>  </code><code>&lt;br /&gt;&lt;br /&gt;</code>

<code>{% </code><code>for</code> <code>k,</code><code>v</code> <code>in</code> <code>grains.get(</code><code>'ip4_interfaces'</code><code>).items() %}</code>

<code>  </code><code>{{ k }}: {{ </code><code>v</code><code>.pop() }} &lt;br /&gt;</code>

<code>{% endfor %}</code>

<code>&lt;</code><code>/p</code><code>&gt;</code>

<code>查看文件是否有改变:</code>

<code>[root@svr205-2 ~]</code><code># cat /usr/share/nginx/html/index.html </code>

<code>  </code><code>HOST:   svr205-2 &lt;br /&gt;</code>

<code>  </code><code>lo: 10.0.205.100 &lt;br /&gt;</code>

<code>  </code><code>eth0: 10.0.205.2 &lt;br /&gt;</code>

<code>如上,得到了该主机的</code><code>hostname</code><code>和ip信息,符合预期。</code>

本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1616036,如需转载请自行联系原作者

继续阅读