mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-03 23:40:14 +08:00
PUB:20150106 Managing Linux server configs with the SaltStack
@GOLinux
This commit is contained in:
parent
f1669fc0c4
commit
249a70a7c9
@ -1,20 +1,21 @@
|
|||||||
SaltStack:Linux服务器配置管理神器
|
通过 SaltStack 管理服务器配置
|
||||||
================================================================================
|
================================================================================
|
||||||
![](http://techarena51.com/wp-content/uploads/2015/01/SaltStack+logo+-+black+on+white.png)
|
![](http://techarena51.com/wp-content/uploads/2015/01/SaltStack+logo+-+black+on+white.png)
|
||||||
|
|
||||||
我在搜索[Puppet][1]的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单,当然这只是一家之言,你大可不必介怀。另外一个爱上Salt的理由是,它可以让你从命令行管理服务器配置,比如:
|
我在搜索[Puppet][1]的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单,当然这只是一家之言,你大可不必介怀。另外一个爱上Salt的理由是,它可以让你从命令行管理服务器配置,比如:
|
||||||
|
|
||||||
要通过Salt来更新所有服务器,你只需运行以下命令
|
要通过Salt来更新所有服务器,你只需运行以下命令即可
|
||||||
|
|
||||||
salt ‘*’ pkg.upgrade
|
salt '*' pkg.upgrade
|
||||||
|
|
||||||
**安装SaltStack到Linux上。**
|
|
||||||
|
|
||||||
如果你是在CentOS 6/7上安装的话,那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户,你可以从[这里][2]添加Salt仓库。Salt是基于python的,所以你也可以使用‘pip’来安装,但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系哦。
|
##安装SaltStack到Linux上##
|
||||||
|
|
||||||
Salt遵循服务器-客户端模式,服务器端称为领主,而客户端则称为下属。
|
如果你是在CentOS 6/7上安装的话,那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户,你可以从[这里][2]添加Salt仓库。Salt是基于python的,所以你也可以使用‘pip’来安装,但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系。
|
||||||
|
|
||||||
**安装并配置Salt领主**
|
Salt采用服务器-客户端模式,服务器端称为领主,而客户端则称为下属。
|
||||||
|
|
||||||
|
###安装并配置Salt领主###
|
||||||
|
|
||||||
[root@salt-master~]# yum install salt-master
|
[root@salt-master~]# yum install salt-master
|
||||||
|
|
||||||
@ -27,7 +28,7 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但
|
|||||||
|
|
||||||
[root@salt-master ~]# systemctl start salt-master
|
[root@salt-master ~]# systemctl start salt-master
|
||||||
|
|
||||||
**安装并配置Salt下属**
|
###安装并配置Salt下属###
|
||||||
|
|
||||||
[root@salt-minion~]#yum install salt-minion
|
[root@salt-minion~]#yum install salt-minion
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但
|
|||||||
|
|
||||||
在启动时,下属客户机会生成一个密钥和一个id。然后,它会连接到Salt领主服务器并验证自己的身份。Salt领主服务器在允许下属客户机下载配置之前,必须接受下属的密钥。
|
在启动时,下属客户机会生成一个密钥和一个id。然后,它会连接到Salt领主服务器并验证自己的身份。Salt领主服务器在允许下属客户机下载配置之前,必须接受下属的密钥。
|
||||||
|
|
||||||
**在Salt领主服务器上列出并接受密钥**
|
###在Salt领主服务器上列出并接受密钥###
|
||||||
|
|
||||||
# 列出所有密钥
|
# 列出所有密钥
|
||||||
[root@salt-master~] salt-key -L
|
[root@salt-master~] salt-key -L
|
||||||
@ -59,7 +60,7 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但
|
|||||||
|
|
||||||
在接受下属客户机的密钥后,你可以使用‘salt’命令来立即获取信息。
|
在接受下属客户机的密钥后,你可以使用‘salt’命令来立即获取信息。
|
||||||
|
|
||||||
**Salt命令行实例**
|
##Salt命令行实例##
|
||||||
|
|
||||||
# 检查下属是否启动并运行
|
# 检查下属是否启动并运行
|
||||||
[root@salt-master~] salt 'minion.com' test.ping
|
[root@salt-master~] salt 'minion.com' test.ping
|
||||||
@ -75,15 +76,15 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但
|
|||||||
# 安装/更新所有服务器上的软件
|
# 安装/更新所有服务器上的软件
|
||||||
[root@salt-master ~]# salt '*' pkg.install git
|
[root@salt-master ~]# salt '*' pkg.install git
|
||||||
|
|
||||||
salt命令需要一些组件来发送信息,其中之一是mimion id,而另一个是下属客户机上要调用的函数。
|
salt命令需要一些组件来发送信息,其中之一是下属客户机的id,而另一个是下属客户机上要调用的函数。
|
||||||
|
|
||||||
在第一个实例中,我使用‘test’模块的‘ping’函数来检查系统是否启动。该函数并不是真的实施一次ping,它仅仅是在下属客户机作出回应时返回‘真’。
|
在第一个实例中,我使用‘test’模块的‘ping’函数来检查系统是否启动。该函数并不是真的实施一次ping,它仅仅是在下属客户机作出回应时返回‘真’。
|
||||||
|
|
||||||
‘cmd.run’用于执行远程命令,而‘pkg’模块包含了包管理的函数。本文结尾提供了全部内建模块的列表。
|
‘cmd.run’用于执行远程命令,而‘pkg’模块包含了包管理的函数。本文结尾提供了全部内建模块的列表。
|
||||||
|
|
||||||
**颗粒实例**
|
###颗粒实例###
|
||||||
|
|
||||||
Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。
|
Salt使用一个名为**颗粒(Grains)**的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。
|
||||||
|
|
||||||
[root@vps4544 ~]# salt -G 'os:Centos' test.ping
|
[root@vps4544 ~]# salt -G 'os:Centos' test.ping
|
||||||
minion:
|
minion:
|
||||||
@ -91,11 +92,11 @@ Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用
|
|||||||
|
|
||||||
更多颗粒实例,请访问http://docs.saltstack.com/en/latest/topics/targeting/grains.html
|
更多颗粒实例,请访问http://docs.saltstack.com/en/latest/topics/targeting/grains.html
|
||||||
|
|
||||||
**通过状态文件系统进行包管理。**
|
##通过状态文件系统进行包管理##
|
||||||
|
|
||||||
为了是软件配置自动化,你需要使用状态系统,并创建状态文件。这些文件使用YAML格式和python字典、列表、字符串以及编号来构成数据结构。将这些文件从头到尾研读一遍,这将有助于你更好地理解它的配置。
|
为了使软件配置自动化,你需要使用状态系统,并创建状态文件。这些文件使用YAML格式和python字典、列表、字符串以及编号来构成数据结构。将这些文件从头到尾研读一遍,这将有助于你更好地理解它的配置。
|
||||||
|
|
||||||
**VIM状态文件实例**
|
###VIM状态文件实例###
|
||||||
|
|
||||||
[root@salt-master~]# vim /srv/salt/vim.sls
|
[root@salt-master~]# vim /srv/salt/vim.sls
|
||||||
vim-enhanced:
|
vim-enhanced:
|
||||||
@ -107,7 +108,7 @@ Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用
|
|||||||
- group: root
|
- group: root
|
||||||
- mode: 644
|
- mode: 644
|
||||||
|
|
||||||
该文件的第一和第三行成为状态id,它们必须包含有需要管理的包或文件的确切名称或路径。在状态id之后是状态和函数声明,‘pkg’和‘file’是状态声明,而‘installed’和‘managed’是函数声明。函数接受参数,用户、组、模式和源都是函数‘managed’的参数。
|
该文件的第一和第三行称为状态id,它们必须包含有需要管理的包或文件的确切名称或路径。在状态id之后是状态和函数声明,‘pkg’和‘file’是状态声明,而‘installed’和‘managed’是函数声明。函数接受参数,用户、组、模式和源都是函数‘managed’的参数。
|
||||||
|
|
||||||
要将该配置应用到下属客户端,请移动你的‘vimrc’文件到‘/src/salt’,然后运行以下命令。
|
要将该配置应用到下属客户端,请移动你的‘vimrc’文件到‘/src/salt’,然后运行以下命令。
|
||||||
|
|
||||||
@ -253,7 +254,7 @@ Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用
|
|||||||
[root@vps4544 ssh]# cp /etc/ssh/sshd_config /srv/salt/ssh/
|
[root@vps4544 ssh]# cp /etc/ssh/sshd_config /srv/salt/ssh/
|
||||||
[root@vps4544 ssh]# salt 'minion.com' state.sls ssh
|
[root@vps4544 ssh]# salt 'minion.com' state.sls ssh
|
||||||
|
|
||||||
**Top文件和环境。**
|
###Top文件和环境###
|
||||||
|
|
||||||
top文件(top.sls)是用来定义你的环境的文件,它允许你映射下属客户机到包,默认环境是‘base’。你需要定义在基本环境下,哪个包会被安装到哪台服务器。
|
top文件(top.sls)是用来定义你的环境的文件,它允许你映射下属客户机到包,默认环境是‘base’。你需要定义在基本环境下,哪个包会被安装到哪台服务器。
|
||||||
|
|
||||||
@ -268,7 +269,7 @@ top文件(top.sls)是用来定义你的环境的文件,它允许你映射
|
|||||||
dev:
|
dev:
|
||||||
- /srv/salt/dev
|
- /srv/salt/dev
|
||||||
|
|
||||||
现在,添加一个top.sls文件到/src/salt
|
现在,添加一个top.sls文件到/src/salt。
|
||||||
|
|
||||||
[root@salt-master ~]# vim /srv/salt/top.sls
|
[root@salt-master ~]# vim /srv/salt/top.sls
|
||||||
base:
|
base:
|
||||||
@ -299,7 +300,9 @@ top文件(top.sls)是用来定义你的环境的文件,它允许你映射
|
|||||||
|
|
||||||
下属客户机将下载top文件并搜索用于它的配置,领主服务器也会将配置应用到所有下属客户机。
|
下属客户机将下载top文件并搜索用于它的配置,领主服务器也会将配置应用到所有下属客户机。
|
||||||
|
|
||||||
这仅仅是一个Salt的简明教程,如果你想要深入学习并理解,你可以访问以下链接。如果你已经在使用Salt,那么请告诉我你的建议和意见吧。
|
---
|
||||||
|
|
||||||
|
这仅仅是一个Salt的简明教程,如果你想要深入学习并理解,你可以访问下面的链接。如果你已经在使用Salt,那么请告诉我你的建议和意见吧。
|
||||||
|
|
||||||
更新: [Foreman][3] 已经通过[插件][4]支持salt。
|
更新: [Foreman][3] 已经通过[插件][4]支持salt。
|
||||||
|
|
||||||
@ -329,7 +332,7 @@ via: http://techarena51.com/index.php/getting-started-with-saltstack/
|
|||||||
|
|
||||||
作者:[Leo G][a]
|
作者:[Leo G][a]
|
||||||
译者:[GOLinux](https://github.com/GOLinux)
|
译者:[GOLinux](https://github.com/GOLinux)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||||
|
|
Loading…
Reference in New Issue
Block a user