天天看点

SaltStack自动化运维初涉--安装简用篇

  很久之前,用过一段时间的Puppet,也就是简单用了用,后来慢慢就丢了,然后就去搞mysql的一些东西了,或许,很多事情就是注定的,以为再来不会用它了的时候,任务来了,说要继续研究这玩意,后面遇到一个牛X的同事,说用SaltStack比较好,而且他已经用这个做了不少实际游泳的案例了,他说,Puppet注重于最终状态,SaltStack注重于实时命令的运行,SaltStack=Puppet+Func,且SaltStack还是使用Python开发的,入手以及后续的功能自定义开发都是非常方便的。于是乎,就看看咯.

角色       操作系统           主机名      IP地址

Master【服务端】    RHEL6U3 X86_64    DemoServer    192.168.153.38

Minion【客户端】     RHEL6U3 X86_64    oracle        192.168.153.137

1. 安装SaltStack Master

 [1] 配置本地YUM源

1

2

3

4

5

6

7

<code>[root@DemoServer ~]</code><code># cat /etc/yum.repos.d/rhel-source.repo</code>

<code>[rhel]</code>

<code>name=rhel</code>

<code>baseurl=http:</code><code>//192</code><code>.168.150.3</code><code>/rhel6</code><code>.3core/</code>

<code>enabled=1</code>

<code>gpgcheck=1</code>

<code>gpgkey=</code><code>file</code><code>:</code><code>///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta</code><code>,</code><code>file</code><code>:</code><code>///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release</code>

额外下载包:python-jinja2-2.2.1-1.el6.x86_64.rpm  

[2] 安装EPEL源

<code>[root@DemoServer ~]</code><code>#  rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm</code>

[3] 开启YUM缓存,保存安装包

8

9

10

11

<code>[root@DemoServer ~]</code><code># cat /etc/yum.conf</code>

<code>[main]</code>

<code>cachedir=</code><code>/var/cache/yum/</code><code>$basearch/$releasever</code>

<code>keepcache=0  修改为  keepcache=1</code>

<code>debuglevel=2</code>

<code>logfile=</code><code>/var/log/yum</code><code>.log</code>

<code>exactarch=1</code>

<code>obsoletes=1</code>

<code>plugins=1</code>

<code>installonly_limit=3</code>

[4] 安装SaltStack Master 软件包

<code>[root@DemoServer ~]</code><code># yum install python-jinja2-2.2.1-1.el6.x86_64.rpm   salt-master salt-minion -y  //本节点即作为Master,也作为Minion使用</code>

[5] 保存所有依赖包,用于离线安装

12

<code>[root@DemoServer packages]</code><code># ll /var/cache/yum/x86_64/6Server/epel/packages</code>

<code>total 3356</code>

<code>-rw-r--r--. 1 root root   52880 May 19  2010 libyaml-0.1.3-1.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  169348 Dec 26  2012 openpgm-5.1.118-3.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root   29556 Jun  2  2013 python-msgpack-0.1.13-3.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  433896 Dec 15  2012 python-zmq-2.2.0.1-1.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  161120 Apr 28  2012 PyYAML-3.10-3.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root 2156412 Nov 20 22:46 salt-0.17.2-2.el6.noarch.rpm</code>

<code>-rw-r--r--. 1 root root   32124 Nov 20 22:46 salt-master-0.17.2-2.el6.noarch.rpm</code>

<code>-rw-r--r--. 1 root root   20956 Nov 20 22:46 salt-minion-0.17.2-2.el6.noarch.rpm</code>

<code>-rw-r--r--. 1 root root   19292 Aug 31  2011 sshpass-1.05-1.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  341724 Sep 22 02:18 zeromq3-3.2.4-1.el6.x86_64.rpm</code>

<code>[root@DemoServer ~]</code><code># ll /var/cache/yum/x86_64/6Server/rhel/packages</code>

<code>-rw-r--r--. 1 root root 1494848 Aug 17  2010 python-babel-0.9.4-5.1.el6.noarch.rpm</code>

13

14

15

<code>[root@DemoServer ~]</code><code># ll saltstack0.17.4  //共计如下软件包</code>

<code>total 5288</code>

<code>-rw-r--r--. 1 root root   52880 Jan  2 16:35 libyaml-0.1.3-1.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  169348 Jan  2 16:35 openpgm-5.1.118-3.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root 1494848 Jan  2 16:36 python-babel-0.9.4-5.1.el6.noarch.rpm</code>

<code>-rwxr--r--. 1 root root  476200 Jan  2 16:36 python-jinja2-2.2.1-1.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root   29556 Jan  2 16:35 python-msgpack-0.1.13-3.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  433896 Jan  2 16:35 python-zmq-2.2.0.1-1.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  161120 Jan  2 16:35 PyYAML-3.10-3.el6.x86_64.rpm</code>

<code>drwxr-xr-x. 2 root root    4096 Jan  2 16:36 repodata</code>

<code>-rw-r--r--. 1 root root 2156412 Jan  2 16:35 salt-0.17.2-2.el6.noarch.rpm</code>

<code>-rw-r--r--. 1 root root   32124 Jan  2 16:35 salt-master-0.17.2-2.el6.noarch.rpm</code>

<code>-rw-r--r--. 1 root root   20956 Jan  2 16:35 salt-minion-0.17.2-2.el6.noarch.rpm</code>

<code>-rw-r--r--. 1 root root   19292 Jan  2 16:35 sshpass-1.05-1.el6.x86_64.rpm</code>

<code>-rw-r--r--. 1 root root  341724 Jan  2 16:35 zeromq3-3.2.4-1.el6.x86_64.rpm</code>

[6] 制作SaltStack安装YUM源

<code>[root@DemoServer ~]</code><code># mv saltstack0.17.4  /var/www/html/saltstack/</code>

<code>[root@DemoServer ~]</code><code># yum install createrepo -y</code>

<code>[root@DemoServer ~]</code><code># createrepo -p -d -o /var/www/html/saltstack/ \</code>

<code>&gt; </code><code>/var/www/html/saltstack/</code>

<code>12</code><code>/12</code> <code>- salt-minion-0.17.2-2.el6.noarch.rpm                                  </code>

<code>Saving Primary metadata</code>

<code>Saving </code><code>file</code> <code>lists metadata</code>

<code>Saving other metadata</code>

<code>Generating sqlite DBs</code>

<code>Sqlite DBs complete</code>

[7] 启动httpd服务

<code>[root@DemoServer ~]</code><code># service httpd start</code>

[8] 安装oracle节点的salt-minion

(1) 配置YUM源

<code>[root@oracle ~]</code><code># cat /etc/yum.repos.d/rhel-source.repo</code>

<code>[saltstack]</code>

<code>name=saltstack</code>

<code>baseurl=http:</code><code>//192</code><code>.168.153.38</code><code>/saltstack</code>

<code>gpgcheck=0</code>

(2) 安装salt-minion 软件包

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

2. 启动服务

<code>[root@DemoServer ~]</code><code># iptables  -F ; service iptables save ; service iptables restart //清空所有IPTABLES规则,或者开放4505与4506端口</code>

<code>[root@DemoServer ~]</code><code># setenforce  0 //手动设置SELINUX状态</code>

<code>[root@DemoServer ~]</code><code># sed -i 's/enforcing/disabled/g'  /etc/sysconfig/selinux //修改SELINUX状态为disabled,重启生效</code>

<code>[root@DemoServer ~]</code><code># grep 'SELINUX=' /etc/sysconfig/selinux</code>

<code># SELINUX= can take one of these three values:</code>

<code>SELINUX=disabled</code>

<code>[root@DemoServer ~]</code><code># service salt-master start //启动salt-master</code>

<code>[root@DemoServer ~]</code><code># chkconfig  salt-master on //设置salt-master开机启动</code>

<code>[root@DemoServer ~]</code><code># service salt-minion start //启动salt-minion</code>

<code>[root@DemoServer ~]</code><code># chkconfig salt-minion on //设置salt-minion开机启动</code>

<code>[root@DemoServer ~]</code><code># netstat  -nltup |grep python //查看端口是否被监听</code>

<code>tcp   0   0 192.168.153.38:4505   0.0.0.0:*   LISTEN  882</code><code>/python</code>       

<code>tcp   0   0 192.168.153.38:4506   0.0.0.0:*   LISTEN  874</code><code>/python</code>

oracle节点上面同样启动

<code>[root@oracle ~]</code><code># service salt-minion start //启动salt-minion服务</code>

<code>[root@oracle ~]</code><code># chkconfig salt-minion on //设为开机启动</code>

3. 修改配置文件

<code>Master:</code>

<code>[root@DemoServer ~]</code><code># cat  /etc/salt/master  |grep -v '#' |grep interface</code>

<code>interface: 192.168.153.38  </code><code>//</code><code>修改监听IP</code>

<code>[root@DemoServer ~]</code><code># service salt-master restart //重启salt-master服务</code>

<code>两个 Minion:</code>

<code>[root@DemoServer ~]</code><code># cat /etc/hosts</code>

<code>127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4</code>

<code>::1         localhost localhost.localdomain localhost6 localhost6.localdomain6</code>

<code>192.168.153.38DemoServer</code>

<code>[root@DemoServer ~]</code><code># cat   /etc/salt/minion |grep -v '#'|grep  master</code>

<code>master: DemoServer  </code><code>//</code><code>指定master的可解析的主机名或者IP地址</code>

<code>[root@DemoServer ~]</code><code># service salt-minion restart //重启 salt-minion 服务</code>

<code>[root@oracle ~]</code><code># cat /etc/salt/minion |grep -v '#' |grep  master</code>

<code>master: 192.168.153.38</code>

<code>[root@oracle ~]</code><code>#  service salt-minion restart //重启 salt-minion 服务</code>

4. 密钥验证

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<code>[root@DemoServer ~]</code><code># salt-key  -L   //列出所有请求key</code>

<code>Accepted Keys:</code>

<code>Unaccepted Keys:</code>

<code>DemoServer  == 本机</code>

<code>oracle            ==新主机,主机名为oracle IP为192.168.153.37</code>

<code>Rejected Keys:</code>

<code>【 上面识别到的</code><code>id</code> <code>默认取客户端的主机名的FQDN值,如果在客户端的</code><code>/etc/salt/minion_id</code><code>中进行修改,则会显示自定义的</code><code>id</code><code>值 】</code>

<code>[root@DemoServer ~]</code><code># salt-key  -a  DemoServer  //批准DemoServer</code>

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

<code>DemoServer</code>

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

<code>Key </code><code>for</code> <code>minion DemoServer accepted.</code>

<code>[root@DemoServer ~]</code><code># salt-key  -L</code>

<code>oracle</code>

<code>[root@DemoServer ~]</code><code># salt-key  -A  //批准接受全部</code>

<code>Key </code><code>for</code> <code>minion oracle accepted.</code>

<code>[root@DemoServer ~]</code><code># salt-key  -L  //再次查看,全部被接受</code>

5. 简单命令尝试

<code>[root@DemoServer ~]</code><code># salt oracle test.ping</code>

<code>oracle:</code>

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

<code>[root@DemoServer ~]</code><code># salt '*' test.ping</code>

<code>DemoServer:</code>

<code>或者</code>

<code>[root@DemoServer ~]</code><code># salt -L 'oracle153_37,DemoServer' test.ping</code>

<code>oracle153_37:</code>

<code>Grains 类似于Puppet中的facter</code>

<code>[root@DemoServer ~]</code><code># salt -G 'cpuarch:x86_64' grains.item num_cpus</code>

<code>  </code><code>num_cpus: 4</code>

<code>[root@DemoServer ~]</code><code># salt '*' grains.ls  //查看有哪些参数可以显示</code>

<code>[root@DemoServer ~]</code><code># salt '*' grains.items  //列出所有参数的条目,item复数</code>

<code> </code><code>//</code><code>列出具体的参数值,item单数</code>

<code>[root@DemoServer ~]</code><code># salt '*'  grains.item os</code>

<code>  </code><code>os: RedHat</code>

昨天对SaltStack的探讨就这些,记录下来,再深究。

本文转自 暗黑魔君 51CTO博客,原文链接:http://blog.51cto.com/clovemfong/1347951,如需转载请自行联系原作者