Skip to content

Latest commit

 

History

History
488 lines (412 loc) · 17.3 KB

15-3.Salt-Cloud-Core-Configuration.md

File metadata and controls

488 lines (412 loc) · 17.3 KB

Core Configuration - 核心配置

Install Salt Cloud - 安装Salt Cloud

Salt Cloud现在是Salt基础软件中的一部分。它被合并作为Salt version 2014.1.0

在Ubuntu上,使用以下命令安装Salt Cloud:

sudo add-apt-repository ppa:saltstack/salt
sudo apt-get update
sudo apt-get install salt-cloud

如果在macOS上使用Salt Cloud,则必须安装curl-ca-bundle。 当前,此软件包无法通过brew获得,但可以通过MacPorts使用:

sudo port install curl-ca-bundle

Salt Cloud依赖于apache-libcloud。 Libcloud可以通过pip install apache-libcloud安装。

Installing Salt Cloud for development - 安装Salt Cloud的开发环境

当完成了Salt的开发环境安装工作后,同时也就启用了对Salt Cloud功能的开发支持,只要确保按上面的段落安装了apache-libcloud

请参考这份Salt开发环境的安装指导材料: Installing Salt for development

Core Configuration - 核心配置

可以在Salt Cloud配置文件中设置许多核心配置选项和一些对虚拟机配置生效的全局选项。 默认情况下,此文件位于/etc/salt/cloud

Thread Pool Size

当salt cloud通过-P参数以并行模式运行时,您可以通过使用正整数值指定pool_size参数来控制线程池大小。

默认情况下,线程池大小将设置为salt cloud管理的VMs数量。

pool_size: 10

Minion Configuration

在此文件中设置了默认的minion配置。 Salt-cloud创建的minions从此文件获取其配置。 此处可以使用在Configuring the Salt Minion中找到的几乎所有参数。

minion:
  master: saltmaster.example.com

特别是,如果端口未设置为默认端口时,则此位置将指定salt master及其监听端口的位置。

与大多数其他设置类似,Minion配置设置在配置文件之间继承。 例如,如上所述,master的设置可能包含在主要的 cloud 配置文件中,但是其他设置可以放置在provider, profile或map映射配置文件中:

ec2-web:
  size: t1.micro
  minion:
    environment: test
    startup_states: sls
    sls_list:
      - web

Salt cloud创建新的Minon时,它可以将grain信息自动添加到Minion配置文件中,以标识最初用于定义它的来源。

生成的grain信息将类似于以下内容:

grains:
  salt-cloud:
    driver: ec2
    provider: my_ec2:ec2
    profile: ec2-web

可以通过cloud配置文件中的enable_cloud_grains:'False'选项来禁用salt-cloud grain的生成。

Cloud Configuration Syntax

与云平台交互的特定数据在此处设置。

云平台服务商provider的配置设置可以存在于多个地方。 第一个是在/etc/salt/cloud中:

# /etc/salt/cloud
providers:
  my-aws-migrated-config:
    id: HJGRYCILJLKJYG
    key: 'kdjgfsgm;woormgl/aserigjksjdhasdfgn'
    keyname: test
    securitygroup: quick-start
    private_key: /root/test.pem
    driver: ec2

云平台服务商provider的配置数据也可以位于/etc/salt/cloud.providers或任何与/etc/salt/cloud.providers.d/*.conf匹配的文件中。 这些位置中的任何位置的所有文件都将被解析为云服务商provider的数据。

继续使用上面的示例配置:

# /etc/salt/cloud.providers
# or could be /etc/salt/cloud.providers.d/*.conf
my-aws-config:
  id: HJGRYCILJLKJYG
  key: 'kdjgfsgm;woormgl/aserigjksjdhasdfgn'
  keyname: test
  securitygroup: quick-start
  private_key: /root/test.pem
  driver: ec2

注意:/etc/salt/cloud.provider.d/中的Salt Cloud provider配置不应指定 providers 的启动密钥。

同一别名块中也可以有多个云配置块。 例如:

production-config:
  - id: HJGRYCILJLKJYG
    key: 'kdjgfsgm;woormgl/aserigjksjdhasdfgn'
    keyname: test
    securitygroup: quick-start
    private_key: /root/test.pem
    driver: ec2

  - user: example_user
    apikey: 123984bjjas87034
    driver: rackspace

但是,使用此配置方法需要更改profile文件配置块。 云平台服务商provider的别名需要附加provider的key/value设置,如以下示例所示:

rhel_aws_dev:
  provider: production-config:ec2
  image: ami-e565ba8c
  size: t1.micro

rhel_aws_prod:
  provider: production-config:ec2
  image: ami-e565ba8c
  size: High-CPU Extra Large Instance

database_prod:
  provider: production-config:rackspace
  image: Ubuntu 12.04 LTS
  size: 256 server

请注意,由于存在多个条目,因此必须在上面的示例production-config:ec2中明确说明provider的别名和名称。

此数据与salt-cloud二进制文件的--list-location--list-images--list-sizes交互,需要使用云平台provider作为参数。 使用的参数应为配置的云平台服务商的别名。 如果云平台服务商的别名具有多个条目,则应使用<provider-alias>:<provider-name>

为了提供更加可扩展的配置,将--providers-config(默认为/etc/salt/cloud.providers)添加到了cli解析器中。 它允许按文件添加provider的配置。

Pillar Configuration

可以使用pillar配置云平台providers。 该功能仅在云模块内部时使用。 您可以设置一个名为cloud的变量,其中包含您的profile配置文件、provider程序和map映射文件,以将该信息传递到云服务器,而不必将完整配置复制到每个minion。 在您的pillar文件中,您将需要使用以下内容:

cloud:
  ssh_key_name: saltstack
  ssh_key_file: /root/.ssh/id_rsa
  update_cachedir: True
  diff_cache_events: True

  providers:
    my-openstack:
      driver: openstack
      region_name: ORD
      cloud: mycloud

  profiles:
    ubuntu-openstack:
      provider: my-openstack
      size: ds512M
      image: CentOS 7
      script_args: git develop

  maps:
    my-dev-map:
      ubuntu-openstack:
        - dev-test01
        - dev-test02
        - dev-test03
        - dev-test04
    my-prd-map:
      ubuntu-openstack:
        - prd-web01
        - prd-web02
            minion:
              id: custom-minion-id-app1-stack1-frontend
            grains:
              roles:
                - webserver
              deployment: datacenter4-openstack
        - prod-db01
        - prod-db02

Cloud Configurations

Scaleway

要将Salt Cloud与Scaleway一起使用,您需要获取访问密钥和API令牌。 API令牌是与您的Scaleway帐户关联的唯一标识符。 要检索访问密钥和API令牌,请登录Scaleway控制面板,打开帐户名上的下拉菜单,然后单击“我的凭据”链接。

如果您没有API令牌,则可以通过单击右上角的“创建新令牌”按钮来创建一个。

my-scaleway-config:
  access_key: 15cf404d-4560-41b1-9a0c-21c3d5c4ff1f
  token: a7347ec8-5de1-4024-a5e3-24b77d1ba91d
  driver: scaleway

注意:在使用此提provider配置的云配置文件中,provider必填字段的语法为provider: my-scaleway-config

Rackspace

Rackspace 云平台需要两个配置参数, userapikey:

my-rackspace-config:
  user: example_user
  apikey: 123984bjjas87034
  driver: rackspace

注意:在使用此provider程序配置的云配置文件中,provider必填字段的语法为provider: my-rackspace-config

Amazon AWS

配置使用Amazon AWS云服务时,有一组配置参数需要设置 id, key, keyname, securitygroupprivate_key:

my-aws-quick-start:
  id: HJGRYCILJLKJYG
  key: 'kdjgfsgm;woormgl/aserigjksjdhasdfgn'
  keyname: test
  securitygroup: quick-start
  private_key: /root/test.pem
  driver: ec2

my-aws-default:
  id: HJGRYCILJLKJYG
  key: 'kdjgfsgm;woormgl/aserigjksjdhasdfgn'
  keyname: test
  securitygroup: default
  private_key: /root/test.pem
  driver: ec2

注意:在使用此provider配置的cloud配置文件中,provider必填字段的语法将为provider: my-aws-quick-startprovider: my-aws-default

Linode

Linode 云服务只需要配置一个 API key,但是也需要同时提供默认的root用户密码信息:

my-linode-config:
  apikey: asldkgfakl;sdfjsjaslfjaklsdjf;askldjfaaklsjdfhasldsadfghdkf
  password: F00barbaz
  ssh_pubkey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKHEOLLbeXgaqRQT9NBAopVz366SdYc0KKX33vAnq+2R user@host
  ssh_key_file: ~/.ssh/id_ed25519
  driver: linode

密码字符串需要至少8个字符,且包含有大小写字母和数字。

注意:在cloud profile配置文件中使用该provider服务时,配置项的设置语法是 provider: my-linode-config

Joyent Cloud

Joyent 云服务需要使用三个配置参数: usernamepassword 用于登录Joyent system, 以及该Joyent账号所使用的 SSH 私钥文件。

my-joyent-config:
  user: fred
  password: saltybacon
  private_key: /root/joyent.pem
  driver: joyent

注意:在cloud profile配置使用该provider时, 配置参数的使用语法是 provider: my-joyent-config

GoGrid

当需要使用Salt Cloud 管理 GoGrid 云服务时, 请先登录 GoGrid web 管理平台并创建一个 API key。点击 "My Account" 并切换进入 API Keys 标签页。

apikeysharedsecret 参数需要被设置,以启用对 GoGrid 云服务管理接口的支持:

my-gogrid-config:
  apikey: asdff7896asdh789
  sharedsecret: saltybacon
  driver: gogrid

注意:在cloud profile配置使用该provider时, 配置参数的使用语法是 provider: my-gogrid-config

OpenStack

将Salt用于管理OpenStack时请使用由openstack-infra团队管理的shade https://docs.openstack.org/shade/latest/驱动程序。

可以使用/etc/openstack/clouds.yml文件和os-client-config https://docs.openstack.org/os-client-config/latest/配置该驱动程序。

myopenstack:
  driver: openstack
  region_name: RegionOne
  cloud: mycloud

或者是,也可以直接把认证信息配置在 cloud provider 配置中:

myopenstack:
  driver: openstack
  region_name: RegionOne
  auth:
    username: 'demo'
    password: secret
    project_name: 'demo'
    auth_url: 'http://openstack/identity'

这两种方法都支持使用供应商https://docs.openstack.org/os-client-config/latest/user/vendor-support.html配置选项。

有关更多信息,请参阅Openstack Cloud Driver Docs

DigitalOcean

使用 Salt 管理 DigitalOcean 云服务需要使用一个 client_key 和一个 api_key参数。 在DigitalOcean的web网站的 "My Settings" 部分, 在API Access 标签页中有详情说明。

my-digitalocean-config:
  driver: digitalocean
  personal_access_token: xxx
  location: New York 1

注意:在cloud profile配置使用该provider时, 配置参数的使用语法是 provider: my-digital-ocean-config

Parallels

使用 Salt 管理 Parallels 云服务需要使用 user, passwordURL参数。 这些可以从你的云服务商处获得。

my-parallels-config:
  user: myuser
  password: xyzzy
  url: https://api.cloud.xmission.com:4465/paci/v1.0/
  driver: parallels

注意:在cloud profile配置使用该provider时, 配置参数的使用语法是 provider: my-parallels-config

Proxmox

使用 Salt 管理 Proxmox 云服务需要使用 user, password, 和 URL配置参数。 这些可以从你的云主机上获取。 PAM 或 PVE 用户都可以使用。

my-proxmox-config:
  driver: proxmox
  user: saltcloud@pve
  password: xyzzy
  url: your.proxmox.host

注意:在cloud profile配置使用该provider时, 配置参数的使用语法是 provider: my-proxmox-config

LXC

lxc驱动程序使用saltify安装salt,并通过attach操作将lxc容器作为新的lxc minion。 我们将尽快通过SSH管理裸机操作。 您也可以通过此驱动程序销毁那些容器。

devhost10-lxc:
  target: devhost10
  driver: lxc

以及在 map file 映射文件中:

devhost10-lxc:
  provider: devhost10-lxc
  from_container: ubuntu
  backing: lvm
  sudo: True
  size: 3g
  ip: 10.0.3.9
  minion:
    master: 10.5.0.1
    master_port: 4506
  lxc_conf:
    - lxc.utsname: superlxc

注意:在cloud profile配置使用该provider时, 配置参数的使用语法是 provider: devhost10-lxc

Saltify

Saltify驱动程序是一种新的实验性驱动程序,旨在使用SSH将Salt安装在虚拟或裸机的远程计算机上。 该驱动程序对于配置已安装系统但未部署Salt的机器非常有用。 有关使用此驱动程序的更多信息以及配置示例,请参阅《Saltify入门指南》文档。

Vagrant

Vagrant驱动程序是一个新的实验性驱动程序,用于控制VagrantBox虚拟机并在其上安装Salt。 目标主机必须是运行中的salt minion,它是通过salt master使用salt-api进行控制的。 有关更多信息,请参见Vagrant入门

Extending Profiles and Cloud Providers Configuration

从0.8.7开始,添加了扩展profiles配置文件和云提供商providers配置并避免重复的选项。 扩展功能适用于当前profile配置文件配置,但是对于云provider配置,仅适用于新语法和相应的配置文件,即/etc/salt/salt/cloud.providers/etc/salt/cloud.providers.d/*.conf

注意: 扩展云profile配置文件和provider提供程序不支持递归。 例如,可以使用第二个配置文件扩展配置文件,但第二个配置文件不能扩展第三配置文件。

同样,如果一个profile配置文件(或provider程序)正在扩展另一个配置文件,并且每个配置文件都包含值列表,则扩展配置文件中的列表将覆盖原始配置文件中的列表。 列表不是被合并在一起。

Extending Profiles - 扩展profiles配置文件

有关如何使用extends扩展profiles配置的一些示例用法,考虑包含以下内容的/etc/salt/salt/cloud.profiles

development-instances:
  provider: my-ec2-config
  size: t1.micro
  ssh_username: ec2_user
  securitygroup:
    - default
  deploy: False

Amazon-Linux-AMI-2012.09-64bit:
  image: ami-54cf5c3d
  extends: development-instances

Fedora-17:
  image: ami-08d97e61
  extends: development-instances

CentOS-5:
  provider: my-aws-config
  image: ami-09b61d60
  extends: development-instances

上面的配置一旦解析,将生成以下配置文件数据:

[{'deploy': False,
  'image': 'ami-08d97e61',
  'profile': 'Fedora-17',
  'provider': 'my-ec2-config',
  'securitygroup': ['default'],
  'size': 't1.micro',
  'ssh_username': 'ec2_user'},
 {'deploy': False,
  'image': 'ami-09b61d60',
  'profile': 'CentOS-5',
  'provider': 'my-aws-config',
  'securitygroup': ['default'],
  'size': 't1.micro',
  'ssh_username': 'ec2_user'},
 {'deploy': False,
  'image': 'ami-54cf5c3d',
  'profile': 'Amazon-Linux-AMI-2012.09-64bit',
  'provider': 'my-ec2-config',
  'securitygroup': ['default'],
  'size': 't1.micro',
  'ssh_username': 'ec2_user'},
 {'deploy': False,
  'profile': 'development-instances',
  'provider': 'my-ec2-config',
  'securitygroup': ['default'],
  'size': 't1.micro',
  'ssh_username': 'ec2_user'}]

Extending Providers - 扩展云提供商providers

下面是一些关于如何使用 extends 扩展cloud providers 配置的示例, 参考 /etc/salt/salt/cloud.providers 的内容:

my-develop-envs:
  - id: HJGRYCILJLKJYG
    key: 'kdjgfsgm;woormgl/aserigjksjdhasdfgn'
    keyname: test
    securitygroup: quick-start
    private_key: /root/test.pem
    location: ap-southeast-1
    availability_zone: ap-southeast-1b
    driver: ec2

  - user: myuser@mycorp.com
    password: mypass
    ssh_key_name: mykey
    ssh_key_file: '/etc/salt/ibm/mykey.pem'
    location: Raleigh
    driver: ibmsce


my-productions-envs:
  - extends: my-develop-envs:ibmsce
    user: my-production-user@mycorp.com
    location: us-east-1
    availability_zone: us-east-1

上面的配置一经解析,将生成以下providers数据:

'providers': {
    'my-develop-envs': [
        {'availability_zone': 'ap-southeast-1b',
         'id': 'HJGRYCILJLKJYG',
         'key': 'kdjgfsgm;woormgl/aserigjksjdhasdfgn',
         'keyname': 'test',
         'location': 'ap-southeast-1',
         'private_key': '/root/test.pem',
         'driver': 'aws',
         'securitygroup': 'quick-start'
        },
        {'location': 'Raleigh',
         'password': 'mypass',
         'driver': 'ibmsce',
         'ssh_key_file': '/etc/salt/ibm/mykey.pem',
         'ssh_key_name': 'mykey',
         'user': 'myuser@mycorp.com'
        }
    ],
    'my-productions-envs': [
        {'availability_zone': 'us-east-1',
         'location': 'us-east-1',
         'password': 'mypass',
         'driver': 'ibmsce',
         'ssh_key_file': '/etc/salt/ibm/mykey.pem',
         'ssh_key_name': 'mykey',
         'user': 'my-production-user@mycorp.com'
        }
    ]
}