Skip to content

Latest commit

 

History

History
232 lines (173 loc) · 10.3 KB

15-33.Salt-Cloud-Miscellaneous-Options.md

File metadata and controls

232 lines (173 loc) · 10.3 KB

Miscellaneous Options

该文章描述了Salt Cloud中可用的其他各种配置参数。

Deploy Script Arguments

自定义部署脚本不太可能需要将自定义参数传递给它们,但是salt-bootstrap已经扩展了很多,这也可能是必需的。 可以在profile配置文件或map映射文件中指定script_args,以将参数传递给部署脚本:

ec2-amazon:
  provider: my-ec2-config
  image: ami-1624987f
  size: t1.micro
  ssh_username: ec2-user
  script: bootstrap-salt
  script_args: -c /tmp/

如果需要,这也已经过测试可以与管道一起使用:

script_args: '| head'

Selecting the File Transport - 文件传输选项

默认情况下,Salt Cloud使用SFTP将文件传输到Linux主机。 但是,如果SFTP不可用,或者需要特定的SCP功能,则可以将Salt Cloud配置为使用SCP。

file_transport: sftp
file_transport: scp

Sync After Install

Salt允许用户创建自定义模块、grains和states,这些可以与minions同步以扩展Salt的功能。

该配置项将通知Salt Cloud在创建minion后将其自定义模块、grains、状态或所有这些同步到minion。 为此,需要将以下行添加到主要的云配置文件中:

sync_after_install: all

可选的取值列表是:

modules
grains
states
all

Setting Up New Salt Masters

用户使用Salt Cloud建立多层次的基础架构已变得越来越普遍。 有时,这涉及将实例设置为除minions以外的其他角色。 考虑到这一点,您现在可以通过在profile配置文件或map映射文件中指定master选项来在计算机上设置master配置。

make_master: True

这将使得Salt Cloud为实例生成master密钥,并告诉salt-bootstrap除salt-minion软件包之外还需要安装salt-master软件包。

默认的master配置通常已经适合大多数用户,除非将特定的master配置添加到配置文件或映射中,否则不会更改默认master配置:

master:
  user: root
  interface: 0.0.0.0

Setting Up a Salt Syndic with Salt Cloud - 使用Salt Cloud部署一个Salt Syndic服务

除了设置新的Salt Master之外,还可以使用Salt Cloud来配置Syndic。 为了通过Salt Cloud设置Salt Syndic,需要在新计算机上安装Salt Master,并且需要使用make_master配置项来设置master配置文件。 可以在profile配置文件或map映射文件中定义此设置:

make_master: True

要安装Salt Syndic,唯一需要配置的其他参数是syndic_master键,用于指定该syndic向哪一个mater服务器报告。 此修改需要放置在主设置中,可以在profile配置文件、provider驱动程序配置文件或是/etc/salt/cloud配置文件中:

master:
  syndic_master: 123.456.789  # may be either an IP address or a hostname

可以通过主配置设置将许多其他Salt Syndic配置设置和参数传递给新的Syndic机器。 有关更多信息,请参见Salt Syndic文档。

SSH Port

默认情况下,ssh端口设置为端口22。如果要在provider驱动程序、profile配置文件或map映射块中使用自定义端口,请使用ssh_port选项。

New in version 2015.5.0.

ssh_port: 2222

Delete SSH Keys

当Salt Cloud部署实例时,该实例的SSH pub key将添加到运行salt-cloud命令的用户的known_hosts文件中。 部署实例后,云主机通常会回收该实例的IP地址。 当Salt Cloud尝试使用以前从同一台计算机访问过的回收IP地址来部署实例时,known_hosts文件中的旧密钥将引起冲突。

为了缓解此问题,可以将Salt Cloud配置为在销毁节点时从known_hosts文件中删除旧密钥。 为此,需要将以下行添加到主云配置文件:

delete_sshkeys: True

Keeping /tmp/Files

Salt Cloud部署实例时,会将临时文件上传到/tmp/以便放置salt-bootstrap。 脚本运行后,将删除它们。 为了保留这些文件(主要用于调试目的),可以添加--keep-tmp选项:

salt-cloud -p myprofile mymachine --keep-tmp

对于那些想知道为什么使用/tmp/而不是/root/的用户,这是由于必须对需要使用sudo的镜像执行此操作,不允许远程root用户登录(这使得/root/不可用) 。

Hide Output From Minion Install

默认情况下,Salt Cloud会将minion部署脚本的输出直接流式传输到STDOUT。 尽管这可能非常有用,但是在某些情况下,您可能希望将其关闭。 可以使用以下配置选项来启用或禁用此输出:

display_ssh_output: False

Connection Timeout

部署Salt时有几个阶段,其中Salt Cloud需要等待某些事情发生。 像是虚拟机获取其IP地址、虚拟机的SSH端口变成可用等。

如果您发现Salt Cloud等待时间的默认值还不够,并且由于Salt Cloud没有等待足够的时间而导致部署失败,则可以调整一些超时的设置。

注意

所有设置应以小写形式提供,且所有值应以秒为单位提供。

您可以针对每个云提供商全局调整这些设置,也可以针对每个云主机的配置文件定义调整事件。

wait_for_ip_timeout

Salt Cloud应该等待VM启动并从云主机获取IP的时间。 默认值:因云提供商而异(5到25分钟之间)

wait_for_ip_interval

在查询VM的IP时,Salt Cloud应该休眠的时间。 默认值:因云提供商而异(5到10秒之间)

ssh_connect_timeout

Salt Cloud与虚拟机成功建立SSH连接前应该等待的时间。 默认值:因云提供商而异(5到15分钟之间)

wait_for_passwd_timeout

可以通过密码或ssh密钥建立ssh连接的时间。 默认值:因云提供商而异(通常为15秒)

wait_for_passwd_maxtries

在放弃之前尝试连接到VM的次数。 默认值:15次尝试

wait_for_fun_timeout

一些云驱动程序使用函数检查可用的IP或SSH成功连接,比较典型的如SoftLayer和SoftLayer-HW。 因此,该参数定义了Salt Cloud在失败之前应重试此类功能函数的时间。 默认值:15分钟。

wait_for_spot_timeout

Salt Cloud在EC2 Spot实例可用之前应等待的时间。 此设置仅适用于EC2云驱动程序。 默认值:10分钟

Salt Cloud Cache

Salt Cloud可以为支持的云提供商维护节点数据的缓存。 以下选项用于管理此功能。

update_cachedir

在受支持的云平台驱动程序上,是否维护从--full-query返回的节点的缓存。 数据将以msgpack格式存储在<SALT_CACHEDIR>/cloud/active/<DRIVER> /<PROVIDER>/<NODE_NAME>.p下。 此设置可以为True或False。

diff_cache_events

在管理云缓存目录时,如果从云主机实时返回的数据与缓存中的数据之间遇到差异,则将触发描述更改的事件。 此设置可以为True或False。

其中一些事件将包含描述节点的数据。 由于返回的某些字段可能包含敏感数据,因此存在cache_event_strip_fields配置选项以从事件返回中剥离这些字段。

cache_event_strip_fields:
  - password
  - priv_key

以下是可以基于此数据触发的事件。

salt/cloud/minionid/cache_node_new

在云缓存目录中未列出的云主机上找到了新节点。 描述新节点的字典将包含在事件中。

salt/cloud/minionid/cache_node_missing

先前在云缓存目录中列出的节点在云主机上不再可用。

salt/cloud/minionid/cache_node_diff

云缓存目录中的一个或多个数据已在云主机上更改。 包含旧数据和新数据的字典将包含在事件中。

SSH Known Hosts

通常,引导虚拟机时,Salt Cloud会忽略SSH主机密钥。 这是因为在启动之前它不知道主机密钥是什么(因为它尚不存在)。 如果打开了严格的主机密钥检查,但在known_hosts文件中没有密钥,则该主机将永远不可用,也无法引导。

如果云平台驱动程序能够在尝试引导前确定主机密钥,则该云平台的驱动程序可以将其添加到known_hosts文件中,然后打开严格的主机密钥检查。 可以在主云配置文件(通常为/etc/salt/cloud)中或在provider特定的配置文件中进行设置:

known_hosts_file: /path/to/.ssh/known_hosts

如果未设置,它将默认为/dev/null,并且严格的主机密钥检查将关闭。

强烈建议不要设置此选项,除非用户已验证云平台驱动支持此功能,并且所使用的镜像能够提供必要的信息。 目前,只有EC2驱动程序支持此功能。

SSH Agent

New in version 2015.5.0.

如果ssh密钥未存储在正在运行的服务器salt-cloud上,请设置ssh_agent,salt-cloud将使用转发的ssh-agent进行身份验证。

ssh_agent: True

File Map Upload

New in version 2014.7.0.

file_map选项允许在运行部署脚本之前将任意一组文件上传到目标系统。 此功能要求云平台驱动支持使用salt.utils.cloud.bootstrap(),目前仅限于ec2、gce、openstack和nova驱动程序。

可以在/etc/salt/cloud或任何云驱动程序或profile配置文件中全局配置file_map。 例如,要上传额外的软件包或自定义部署脚本,使用file_map的云配置文件可能类似于:

ubuntu14:
  provider: ec2-config
  image: ami-98aa1cf0
  size: t1.micro
  ssh_username: root
  securitygroup: default
  file_map:
    /local/path/to/custom/script: /remote/path/to/use/custom/script
    /local/path/to/package: /remote/path/to/store/package

Running Pre-Flight Commands

New in version 2018.3.0.

要在运行部署脚本之前在VM上执行指定的preflight Shell命令,请使用preflight_cmds选项。 这些必须定义为云配置文件中的列表。 例如:

my-cloud-profile:
  provider: linode-config
  image: Ubuntu 16.04 LTS
  size: Linode 2048
  preflight_cmds:
    - whoami
    - echo 'hello world!'

这些命令将在执行引导脚本之前按顺序运行。

Force Minion Config

New in version 2018.3.0.

force_minion_config选项请求引导过程中覆盖现有的minion配置文件和public/private密钥文件。 默认值:False

这对于希望接管以前的salt master管理权限的驱动程序(例如saltify)可能很重要。

my_saltify_provider:
  driver: saltify
  force_minion_config: true