Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow AWS EC2 Cloud Provider To Specify Salt Minion Repo Version #54857

Closed
damianknopp opened this issue Oct 2, 2019 · 1 comment
Closed

Comments

@damianknopp
Copy link

damianknopp commented Oct 2, 2019

Description of Issue

This is a feature request. Currently 2019.2.1 has released and broken my workflow. And I have no timeline or understanding when the issue will be fixed. This request is to take more control of the bootstrap process for new nodes using saltstack.

Setup

Salt Stack allows you to specify an AWS EC2 cloud provider. See, https://docs.saltstack.com/en/latest/topics/cloud/aws.html for setup.

Steps to Reproduce Issue

When spinning up new (Linux CentOS and Linux 2 AMI) EC2 instances with a saltstack EC2 cloud provider, then the EC2 instances bootstrap to the latest salt stack repository

> sudo cat /etc/yum.repos.d/saltstack.repo 
[saltstack]
name=SaltStack latest Release Channel for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/7/$basearch/latest/

This feature request is asking for a way to pin to earlier releases as a parameter in the cloud provider. Such a parameter would point to one of the older locations; eg:
Where the new parameter is 2018.3, the repo would point here;

baseurl=https://repo.saltstack.com/yum/redhat/7/$basearch/2018.3/

Sample /etc/salt/cloud.providers.d/company.conf

company-provider:
  minion:
    master: ip-1xxxxx.ec2.internal
    id: 'use-instance-role-credentials'
    key: 'use-instance-role-credentials'
    private_key: /home/centos/keys/abc.pem
    keyname: abc
   location: us-east-1
   availability_zone: us-east-1c
   ssh_username: centos
   driver: ec2

/etc/salt/cloud.profiles.d/company.conf

sample-nodetype:
  provider: company-provider
  image: ami-02eac2c0129f6376b
  size: m5.4xlarge
  ssh_username: centos
  del_root_vol_on_destroy: True
  del_all_vols_on_destroy: True
  volumes:
    - { size: 256, device: /dev/sdf, type: gp2, iops: 1000, encrypted: True, tags: { "Cluster": "abc" } }
  grains:
    roles:
      - nodetype
  sync_after_install: grains

Versions Report

Request is for any upcoming versions, > 2019.2.1+

Currently using;

>sudo salt-master --version
salt-master 2019.2.0 (Fluorine)
sudo salt-minion --version
salt-minion 2019.2.0 (Fluorine)

Thank you.

@damianknopp
Copy link
Author

Closing this request. To resolve the issue of pinning to a saltstack version while using EC2 cloud provider driver, one can pass an argument to the bootstrap script. Thanks for the tip @whytewolf

For example; to pin new EC2 instances to saltstack minion version 2019.2.0, pass in script_args;

/etc/salt/cloud.providers.d/company.conf

company-provider:
  minion:
    driver: ec2

/etc/salt/cloud.profiles.d/company.conf

sample-nodetype:
  provider: company-provider
  script_args: 'stable 2019.2.0'

As an added bonus, if you use terraform salt-masterless you can also pass in the saltstack version to the bootstrap script;

bootstrap_args = "stable 2019.2.0"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant