mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge remote-tracking branch 'upstream/2015.8' into merge-forward-2016.3
Conflicts: README.rst doc/conf.py doc/ref/index.rst doc/ref/proxy/all/salt.proxy.ssh_sample.rst doc/topics/installation/rhel.rst doc/topics/releases/2015.8.4.rst doc/topics/tutorials/states_pt5.rst salt/cloud/clouds/ec2.py salt/cloud/clouds/opennebula.py salt/config/__init__.py salt/modules/boto_dynamodb.py salt/modules/boto_ec2.py salt/modules/boto_elasticache.py salt/modules/boto_elb.py salt/modules/boto_iam.py salt/modules/boto_rds.py salt/modules/boto_sns.py salt/modules/boto_sqs.py salt/modules/dracr.py salt/modules/git.py salt/modules/mine.py salt/modules/systemd.py salt/modules/win_pkg.py salt/modules/yumpkg.py salt/pillar/__init__.py salt/states/git.py salt/states/rabbitmq_vhost.py salt/states/saltmod.py salt/utils/pkg/rpm.py setup.py tests/unit/modules/systemd_test.py tests/unit/states/rabbitmq_vhost_test.py
This commit is contained in:
commit
076b49a4ca
187 changed files with 3157 additions and 1329 deletions
125
README.rst
125
README.rst
|
@ -2,67 +2,108 @@
|
|||
What is SaltStack?
|
||||
==================
|
||||
|
||||
Salt is a new approach to infrastructure management. Easy enough to get
|
||||
running in minutes, scalable enough to manage tens of thousands of servers,
|
||||
and fast enough to communicate with them in *seconds*.
|
||||
SaltStack makes software for complex systems management at scale.
|
||||
SaltStack is the company that created and maintains the Salt Open
|
||||
project and develops and sells SaltStack Enterprise software, services
|
||||
and support. Easy enough to get running in minutes, scalable enough to
|
||||
manage tens of thousands of servers, and fast enough to communicate with
|
||||
them in *seconds*.
|
||||
|
||||
Salt delivers a dynamic communication bus for infrastructures that can be used
|
||||
for orchestration, remote execution, configuration management and much more.
|
||||
Salt is a new approach to infrastructure management built on a dynamic
|
||||
communication bus. Salt can be used for data-driven orchestration,
|
||||
remote execution for any infrastructure, configuration management for
|
||||
any app stack, and much more.
|
||||
|
||||
Documentation
|
||||
=============
|
||||
Download Salt Open
|
||||
==================
|
||||
|
||||
Salt Open is tested and packaged to run on CentOS, Debian, RHEL, Ubuntu,
|
||||
Windows. Download Salt Open and get started now.
|
||||
|
||||
`<https://repo.saltstack.com/>`_
|
||||
|
||||
`Installation Instructions <https://docs.saltstack.com/en/latest/topics/installation/index.html>`_
|
||||
|
||||
SaltStack Documentation
|
||||
=======================
|
||||
|
||||
Installation instructions, getting started guides, and in-depth API
|
||||
documentation.
|
||||
|
||||
http://docs.saltstack.com
|
||||
`<https://docs.saltstack.com/en/getstarted/>`_
|
||||
|
||||
IRC Chat
|
||||
========
|
||||
`<https://docs.saltstack.com/en/latest/>`_
|
||||
|
||||
Join the vibrant, helpful and positive SaltStack chat room in Freenode at
|
||||
#salt. There is no need to introduce yourself, or ask permission to join in,
|
||||
just help and be helped! Make sure to wait for an answer, sometimes it may take
|
||||
a few moments for someone to reply.
|
||||
Get SaltStack Support and Help
|
||||
==============================
|
||||
|
||||
http://webchat.freenode.net/?channels=salt&uio=Mj10cnVlJjk9dHJ1ZSYxMD10cnVl83
|
||||
**IRC Chat** - Join the vibrant, helpful and positive SaltStack chat room in
|
||||
Freenode at #salt. There is no need to introduce yourself, or ask permission to
|
||||
join in, just help and be helped! Make sure to wait for an answer, sometimes it
|
||||
may take a few moments for someone to reply.
|
||||
|
||||
Salt Air
|
||||
========
|
||||
`<http://webchat.freenode.net/?channels=salt&uio=Mj10cnVlJjk9dHJ1ZSYxMD10cnVl83>`_
|
||||
|
||||
The SaltStack YouTube channel is filled with Salt videos and presentations.
|
||||
Watch the latest Salt Air episodes for updates from Thomas on development,
|
||||
catch tutorials, and stay on the cutting edge of Salt.
|
||||
**Mailing List** - The SaltStack community users mailing list is hosted by
|
||||
Google groups. Anyone can post to ask questions about SaltStack products and
|
||||
anyone can help answer. Join the conversation!
|
||||
|
||||
http://www.youtube.com/user/saltstack
|
||||
|
||||
Mailing List
|
||||
============
|
||||
|
||||
The SaltStack community users mailing list is hosted by Google groups. Anyone
|
||||
can post to ask questions about SaltStack products and anyone can help answer.
|
||||
Join the conversation!
|
||||
|
||||
https://groups.google.com/forum/#!forum/salt-users
|
||||
`<https://groups.google.com/forum/#!forum/salt-users>`_
|
||||
|
||||
You may subscribe to the list without a Google account by emailing
|
||||
salt-users+subscribe@googlegroups.com and you may post to the list by emailing
|
||||
salt-users@googlegroups.com
|
||||
|
||||
**Reporting Issues** - To report an issue with Salt, please follow the
|
||||
guidelines for filing bug reports:
|
||||
`<https://docs.saltstack.com/en/develop/topics/development/reporting_bugs.html>`_
|
||||
|
||||
**SaltStack Support** - If you need dedicated, prioritized support, please
|
||||
consider a SaltStack Support package that fits your needs:
|
||||
`<http://www.saltstack.com/support>`_
|
||||
|
||||
Engage SaltStack
|
||||
================
|
||||
|
||||
`SaltConf`_, **User Groups and Meetups** - SaltStack has a vibrant and `global
|
||||
community`_ of customers, users, developers and enthusiasts. Connect with other
|
||||
Salted folks in your area of the world, or join `SaltConf16`_, the SaltStack
|
||||
annual user conference, April 19-21 in Salt Lake City. Please let us know if
|
||||
you would like to start a user group or if we should add your existing
|
||||
SaltStack user group to this list by emailing: info@saltstack.com
|
||||
|
||||
**SaltStack Training** - Get access to proprietary `SaltStack education
|
||||
offerings`_ through instructor-led training offered on-site, virtually or at
|
||||
SaltStack headquarters in Salt Lake City. SaltStack Enterprise training helps
|
||||
increase the value and effectiveness of SaltStack software for any customer and
|
||||
is a prerequisite for coveted `SaltStack Certified Engineer (SSCE)`_ status.
|
||||
SaltStack training is also available through several `SaltStack professional
|
||||
services`_ offerings.
|
||||
|
||||
**Follow SaltStack on -**
|
||||
|
||||
* YouTube - `<http://www.youtube.com/saltstack>`_
|
||||
* Twitter - `<http://www.twitter.com/saltstack>`_
|
||||
* Facebook - `<https://www.facebook.com/SaltStack/>`_
|
||||
* LinkedIn - `<https://www.linkedin.com/company/salt-stack-inc>`_
|
||||
* LinkedIn Group - `<https://www.linkedin.com/groups/4877160>`_
|
||||
* Google+ - `<https://plus.google.com/b/112856352920437801867/+SaltStackInc/posts>`_
|
||||
|
||||
.. _SaltConf: http://www.youtube.com/user/saltstack
|
||||
.. _global community: http://www.meetup.com/pro/saltstack/
|
||||
.. _SaltConf16: http://saltconf.com/
|
||||
.. _SaltStack education offerings: http://saltstack.com/training/
|
||||
.. _SaltStack Certified Engineer (SSCE): http://saltstack.com/certification/
|
||||
.. _SaltStack professional services: http://saltstack.com/services/
|
||||
|
||||
Developing Salt
|
||||
===============
|
||||
|
||||
The Salt development team is welcoming, positive, and dedicated to helping
|
||||
people get new code and fixes into SaltStack projects. Log into GitHub and get
|
||||
started with one of the largest developer communities in the world. The following
|
||||
links should get you started:
|
||||
The Salt development team is welcoming, positive, and dedicated to
|
||||
helping people get new code and fixes into SaltStack projects. Log into
|
||||
GitHub and get started with one of the largest developer communities in
|
||||
the world. The following links should get you started:
|
||||
|
||||
* https://github.com/saltstack
|
||||
* http://docs.saltstack.com/en/latest/topics/development/index.html
|
||||
* `<https://github.com/saltstack>`_
|
||||
* `<https://docs.saltstack.com/en/latest/topics/development/index.html>`_
|
||||
|
||||
Reporting Issues
|
||||
================
|
||||
|
||||
To report an issue with Salt, please follow the guidelines for filing bug reports:
|
||||
|
||||
* http://docs.saltstack.com/en/develop/topics/development/reporting_bugs.html
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#log_level_logfile: info
|
||||
|
||||
|
||||
# The date and time format used in log messages. Allowed date/time formating
|
||||
# The date and time format used in log messages. Allowed date/time formatting
|
||||
# can be seen here:
|
||||
#
|
||||
# http://docs.python.org/library/time.html#time.strftime
|
||||
|
|
52
conf/master
52
conf/master
|
@ -621,6 +621,43 @@
|
|||
# Recursively merge lists by aggregating them instead of replacing them.
|
||||
#pillar_merge_lists: False
|
||||
|
||||
# A master can cache pillars locally to bypass the expense of having to render them
|
||||
# for each minion on every request. This feature should only be enabled in cases
|
||||
# where pillar rendering time is known to be unsatisfactory and any attendent security
|
||||
# concerns about storing pillars in a master cache have been addressed.
|
||||
#
|
||||
# When enabling this feature, be certain to read through the additional pillar_cache_*
|
||||
# configuration options to fully understand the tuneable parameters and their implications.
|
||||
#
|
||||
#pillar_cache: False
|
||||
|
||||
# If and only if a master has set `pillar_cache: True`, the cache TTL controls the amount
|
||||
# of time, in seconds, before the cache is considered invalid by a master and a fresh
|
||||
# pillar is recompiled and stored.
|
||||
#
|
||||
# pillar_cache_ttl: 3600
|
||||
|
||||
# If an only if a master has set `pillar_cache: True`, one of several storage providers
|
||||
# can be utililzed.
|
||||
#
|
||||
# `disk`: The default storage backend. This caches rendered pillars to the master cache.
|
||||
# Rendered pillars are serialized and deserialized as msgpack structures for speed.
|
||||
# Note that pillars are stored UNENCRYPTED. Ensure that the master cache
|
||||
# has permissions set appropriately. (Sane defaults are provided.)
|
||||
#
|
||||
#`memory`: [EXPERIMENTAL] An optional backend for pillar caches which uses a pure-Python
|
||||
# in-memory data structure for maximal performance. There are several cavaets,
|
||||
# however. First, because each master worker contains its own in-memory cache,
|
||||
# there is no guarantee of cache consistency between minion requests. This
|
||||
# works best in situations where the pillar rarely if ever changes. Secondly,
|
||||
# and perhaps more importantly, this means that unencrypted pillars will
|
||||
# be accessible to any process which can examine the memory of the salt-master!
|
||||
# This may represent a substantial security risk.
|
||||
#
|
||||
#pillar_cache_backend: disk
|
||||
|
||||
|
||||
|
||||
|
||||
##### Syndic settings #####
|
||||
##########################################
|
||||
|
@ -738,7 +775,7 @@
|
|||
# If using 'log_granular_levels' this must be set to the highest desired level.
|
||||
#log_level_logfile: warning
|
||||
|
||||
# The date and time format used in log messages. Allowed date/time formating
|
||||
# The date and time format used in log messages. Allowed date/time formatting
|
||||
# can be seen here: http://docs.python.org/library/time.html#time.strftime
|
||||
#log_datefmt: '%H:%M:%S'
|
||||
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
|
||||
|
@ -774,11 +811,18 @@
|
|||
|
||||
##### Node Groups ######
|
||||
##########################################
|
||||
# Node groups allow for logical groupings of minion nodes. A group consists of a group
|
||||
# name and a compound target.
|
||||
# Node groups allow for logical groupings of minion nodes. A group consists of
|
||||
# a group name and a compound target. Nodgroups can reference other nodegroups
|
||||
# with 'N@' classifier. Ensure that you do not have circular references.
|
||||
#
|
||||
#nodegroups:
|
||||
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
|
||||
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
|
||||
# group2: 'G@os:Debian and foo.domain.com'
|
||||
# group3: 'G@os:Debian and N@group1'
|
||||
# group4:
|
||||
# - 'G@foo:bar'
|
||||
# - 'or'
|
||||
# - 'G@foo:baz'
|
||||
|
||||
|
||||
##### Range Cluster settings #####
|
||||
|
|
|
@ -548,7 +548,7 @@
|
|||
# Default: 'warning'
|
||||
#log_level_logfile:
|
||||
|
||||
# The date and time format used in log messages. Allowed date/time formating
|
||||
# The date and time format used in log messages. Allowed date/time formatting
|
||||
# can be seen here: http://docs.python.org/library/time.html#time.strftime
|
||||
#log_datefmt: '%H:%M:%S'
|
||||
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
|
||||
|
|
|
@ -510,7 +510,7 @@
|
|||
# Default: 'warning'
|
||||
#log_level_logfile:
|
||||
|
||||
# The date and time format used in log messages. Allowed date/time formating
|
||||
# The date and time format used in log messages. Allowed date/time formatting
|
||||
# can be seen here: http://docs.python.org/library/time.html#time.strftime
|
||||
#log_datefmt: '%H:%M:%S'
|
||||
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
|
||||
|
|
|
@ -167,7 +167,7 @@ project = 'Salt'
|
|||
copyright = '2016 SaltStack, Inc.'
|
||||
|
||||
version = salt.version.__version__
|
||||
latest_release = '2015.8.4' # latest release
|
||||
latest_release = '2015.8.5' # latest release
|
||||
previous_release = '2015.5.9' # latest release from previous branch
|
||||
previous_release_dir = '2015.5' # path on web server for previous branch
|
||||
build_type = 'develop' # latest, previous, develop
|
||||
|
|
|
@ -2679,6 +2679,10 @@ A group consists of a group name and a compound target.
|
|||
group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
|
||||
group2: 'G@os:Debian and foo.domain.com'
|
||||
group3: 'G@os:Debian and N@group1'
|
||||
group4:
|
||||
- 'G@foo:bar'
|
||||
- 'or'
|
||||
- 'G@foo:baz'
|
||||
|
||||
More information on using nodegroups can be found :ref:`here <targeting-nodegroups>`.
|
||||
|
||||
|
|
24
doc/ref/grains/all/index.rst
Normal file
24
doc/ref/grains/all/index.rst
Normal file
|
@ -0,0 +1,24 @@
|
|||
.. _all-salt.grains:
|
||||
|
||||
===================================
|
||||
Full list of builtin grains modules
|
||||
===================================
|
||||
|
||||
.. currentmodule:: salt.grains
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
:template: autosummary.rst.tmpl
|
||||
|
||||
chronos
|
||||
core
|
||||
disks
|
||||
esxi
|
||||
extra
|
||||
fx2
|
||||
junos
|
||||
marathon
|
||||
mdadm
|
||||
opts
|
||||
philips_hue
|
||||
rest_sample
|
6
doc/ref/grains/all/salt.grains.chronos.rst
Normal file
6
doc/ref/grains/all/salt.grains.chronos.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
===================
|
||||
salt.grains.chronos
|
||||
===================
|
||||
|
||||
.. automodule:: salt.grains.chronos
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.core.rst
Normal file
6
doc/ref/grains/all/salt.grains.core.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
================
|
||||
salt.grains.core
|
||||
================
|
||||
|
||||
.. automodule:: salt.grains.core
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.disks.rst
Normal file
6
doc/ref/grains/all/salt.grains.disks.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
=================
|
||||
salt.grains.disks
|
||||
=================
|
||||
|
||||
.. automodule:: salt.grains.disks
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.esxi.rst
Normal file
6
doc/ref/grains/all/salt.grains.esxi.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
================
|
||||
salt.grains.esxi
|
||||
================
|
||||
|
||||
.. automodule:: salt.grains.esxi
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.extra.rst
Normal file
6
doc/ref/grains/all/salt.grains.extra.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
=================
|
||||
salt.grains.extra
|
||||
=================
|
||||
|
||||
.. automodule:: salt.grains.extra
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.fx2.rst
Normal file
6
doc/ref/grains/all/salt.grains.fx2.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
===============
|
||||
salt.grains.fx2
|
||||
===============
|
||||
|
||||
.. automodule:: salt.grains.fx2
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.junos.rst
Normal file
6
doc/ref/grains/all/salt.grains.junos.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
=================
|
||||
salt.grains.junos
|
||||
=================
|
||||
|
||||
.. automodule:: salt.grains.junos
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.marathon.rst
Normal file
6
doc/ref/grains/all/salt.grains.marathon.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
====================
|
||||
salt.grains.marathon
|
||||
====================
|
||||
|
||||
.. automodule:: salt.grains.marathon
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.mdadm.rst
Normal file
6
doc/ref/grains/all/salt.grains.mdadm.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
=================
|
||||
salt.grains.mdadm
|
||||
=================
|
||||
|
||||
.. automodule:: salt.grains.mdadm
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.opts.rst
Normal file
6
doc/ref/grains/all/salt.grains.opts.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
================
|
||||
salt.grains.opts
|
||||
================
|
||||
|
||||
.. automodule:: salt.grains.opts
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.philips_hue.rst
Normal file
6
doc/ref/grains/all/salt.grains.philips_hue.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
=======================
|
||||
salt.grains.philips_hue
|
||||
=======================
|
||||
|
||||
.. automodule:: salt.grains.philips_hue
|
||||
:members:
|
6
doc/ref/grains/all/salt.grains.rest_sample.rst
Normal file
6
doc/ref/grains/all/salt.grains.rest_sample.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
=======================
|
||||
salt.grains.rest_sample
|
||||
=======================
|
||||
|
||||
.. automodule:: salt.grains.rest_sample
|
||||
:members:
|
|
@ -12,6 +12,7 @@ This section contains a list of the Python modules that are used to extend the v
|
|||
../ref/beacons/all/index
|
||||
../ref/engines/all/index
|
||||
../ref/file_server/all/index
|
||||
../ref/grains/all/index
|
||||
../ref/modules/all/index
|
||||
../ref/netapi/all/index
|
||||
../ref/output/all/index
|
||||
|
|
|
@ -3,4 +3,4 @@ salt.proxy.esxi
|
|||
===============
|
||||
|
||||
.. automodule:: salt.proxy.esxi
|
||||
:members:
|
||||
:members:
|
||||
|
|
|
@ -3,4 +3,4 @@ salt.proxy.fx2
|
|||
==============
|
||||
|
||||
.. automodule:: salt.proxy.fx2
|
||||
:members:
|
||||
:members:
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
salt.proxy.junos module
|
||||
=======================
|
||||
================
|
||||
salt.proxy.junos
|
||||
================
|
||||
|
||||
.. automodule:: salt.proxy.junos
|
||||
:members:
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
salt.proxy.rest_sample module
|
||||
=============================
|
||||
======================
|
||||
salt.proxy.rest_sample
|
||||
======================
|
||||
|
||||
.. automodule:: salt.proxy.rest_sample
|
||||
:members:
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
salt.proxy.ssh_sample module
|
||||
============================
|
||||
=====================
|
||||
salt.proxy.ssh_sample
|
||||
=====================
|
||||
|
||||
.. automodule:: salt.proxy.ssh_sample
|
||||
:members:
|
||||
|
|
|
@ -78,7 +78,7 @@ the json, yaml, or pprint outputters:
|
|||
.. _state-layers-sls:
|
||||
|
||||
SLS
|
||||
====
|
||||
===
|
||||
|
||||
Above "High Data", the logical layers are no longer technically required to be
|
||||
executed, or to be executed in a hierarchy. This means that how the High data
|
||||
|
@ -122,13 +122,13 @@ To execute the High State call ``state.highstate``:
|
|||
|
||||
salt '*' state.highstate
|
||||
|
||||
.. _state-layers-overstate:
|
||||
.. _state-layers-orchestrate:
|
||||
|
||||
OverState
|
||||
=========
|
||||
Orchestrate
|
||||
===========
|
||||
|
||||
The overstate layer expresses the highest functional layer of Salt's automated
|
||||
The orchestrate layer expresses the highest functional layer of Salt's automated
|
||||
logic systems. The Overstate allows for stateful and functional orchestration
|
||||
of routines from the master. The overstate defines in data execution stages
|
||||
of routines from the master. The orchestrate defines in data execution stages
|
||||
which minions should execute states, or functions, and in what order using
|
||||
requisite logic.
|
|
@ -1,7 +0,0 @@
|
|||
================
|
||||
OverState System
|
||||
================
|
||||
|
||||
.. note::
|
||||
|
||||
This documentation has been moved :ref:`here <states-overstate>`.
|
|
@ -19,7 +19,7 @@ In an issue report, please include the following information:
|
|||
|
||||
* Any steps taken to attempt to remediate the problem.
|
||||
|
||||
* Any configuration options set in a configuration file that may be relevent.
|
||||
* Any configuration options set in a configuration file that may be relevant.
|
||||
|
||||
* A reproduceable test case. This may be as simple as an SLS file that
|
||||
illustrates a problem or it may be a link to a repository that contains a
|
||||
|
|
|
@ -84,58 +84,36 @@ To install using the SaltStack repository:
|
|||
- ``yum install salt-cloud``
|
||||
|
||||
.. note::
|
||||
EPEL support is not required when installing using the SaltStack repository
|
||||
on Red Hat 6 and 7. EPEL must be enabled when installing on Red Hat 5.
|
||||
As of 2015.8.0, EPEL repository is no longer required for installing on
|
||||
RHEL systems. SaltStack repository provides all needed dependencies.
|
||||
|
||||
Post-installation tasks
|
||||
=======================
|
||||
.. warning::
|
||||
If installing on Red Hat Enterprise Linux 7 with disabled (not subscribed on)
|
||||
'RHEL Server Releases' or 'RHEL Server Optional Channel' repositories,
|
||||
append CentOS 7 GPG key URL to SaltStack yum repository configuration to
|
||||
install required base packages:
|
||||
|
||||
**Master**
|
||||
.. code-block:: cfg
|
||||
|
||||
To have the Master start automatically at boot time:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
chkconfig salt-master on
|
||||
|
||||
To start the Master:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
service salt-master start
|
||||
|
||||
**Minion**
|
||||
|
||||
To have the Minion start automatically at boot time:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
chkconfig salt-minion on
|
||||
|
||||
|
||||
To start the Minion:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
service salt-minion start
|
||||
|
||||
Now go to the :doc:`Configuring Salt</ref/configuration/index>` page.
|
||||
[saltstack-repo]
|
||||
name=SaltStack repo for Red Hat Enterprise Linux $releasever
|
||||
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
|
||||
https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/base/RPM-GPG-KEY-CentOS-7
|
||||
|
||||
Installation from the Community Repository
|
||||
==========================================
|
||||
|
||||
Beginning with version 0.9.4, Salt has been available in `EPEL`_. For
|
||||
RHEL/CentOS 5, `Fedora COPR`_ is recommended due to the removal of some
|
||||
dependencies from EPEL5.
|
||||
|
||||
On RHEL/CentOS 6, the proper Jinja package 'python-jinja2' was moved from EPEL
|
||||
to the "RHEL Server Optional Channel". Verify this repository is enabled before
|
||||
installing salt on RHEL/CentOS 6.
|
||||
RHEL/CentOS 5, `Fedora COPR`_ is a single community repository that provides
|
||||
Salt packages due to the removal from EPEL5.
|
||||
|
||||
.. note::
|
||||
Packages in these repositories are community built, and it can
|
||||
take a little while until the latest SaltStack release is available
|
||||
in this repository.
|
||||
Packages in these repositories are built by community, and it can
|
||||
take a little while until the latest stable SaltStack release become
|
||||
available.
|
||||
|
||||
.. _`EPEL`: http://fedoraproject.org/wiki/EPEL
|
||||
.. _`Fedora COPR`: https://copr.fedorainfracloud.org/coprs/saltstack/salt-el5/
|
||||
|
@ -144,10 +122,10 @@ RHEL/CentOS 6 and 7, Scientific Linux, etc.
|
|||
-------------------------------------------
|
||||
|
||||
.. warning::
|
||||
Salt 2015.8 requires ``python-crypto`` 2.6.1 or higher, and ``python-tornado`` version
|
||||
4.2.1 or higher. These packages are not currently available in EPEL for
|
||||
Red Hat 5 and 6. You must install these dependencies from another location
|
||||
or use the SaltStack repository documented above.
|
||||
Salt 2015.8 is currently not available in EPEL due to unsatisfied
|
||||
dependencies: ``python-crypto`` 2.6.1 or higher, and ``python-tornado``
|
||||
version 4.2.1 or higher. These packages are not currently available in EPEL
|
||||
for Red Hat Enterprise Linux 6 and 7.
|
||||
|
||||
Enabling EPEL
|
||||
*************
|
||||
|
@ -165,7 +143,6 @@ Replace ``epel-release-X-Y.rpm`` with the appropriate filename.
|
|||
.. _RHEL/CentOS 6: http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html
|
||||
.. _RHEL/CentOS 7: http://download.fedoraproject.org/pub/epel/7/x86_64/repoview/epel-release.html
|
||||
|
||||
|
||||
Installing Stable Release
|
||||
*************************
|
||||
|
||||
|
@ -183,9 +160,9 @@ Installing from ``epel-testing``
|
|||
********************************
|
||||
|
||||
When a new Salt release is packaged, it is first admitted into the
|
||||
``epel-testing`` repository, before being moved to the stable repo.
|
||||
``epel-testing`` repository, before being moved to the stable EPEL repository.
|
||||
|
||||
To install from ``epel-testing``, use the ``enablerepo`` argument for yum:
|
||||
To install from ``epel-testing``, use the ``enablerepo`` argument for ``yum``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
@ -195,7 +172,7 @@ Installation Using pip
|
|||
======================
|
||||
|
||||
Since Salt is on `PyPI`_, it can be installed using pip, though most users
|
||||
prefer to install using RPMs (which can be installed from `EPEL`_).
|
||||
prefer to install using RPM packages (which can be installed from `EPEL`_).
|
||||
|
||||
Installing from pip has a few additional requirements:
|
||||
|
||||
|
@ -215,7 +192,6 @@ Installation from pip:
|
|||
pip install salt
|
||||
|
||||
.. warning::
|
||||
|
||||
If installing from pip (or from source using ``setup.py install``), be
|
||||
advised that the ``yum-utils`` package is needed for Salt to manage
|
||||
packages. Also, if the Python dependencies are not already installed, then
|
||||
|
@ -226,15 +202,15 @@ Installation from pip:
|
|||
ZeroMQ 4
|
||||
========
|
||||
|
||||
We recommend using ZeroMQ 4 where available. SaltStack provides ZeroMQ 4.0.4
|
||||
and pyzmq 14.3.1 in the :ref:`SaltStack Repository <installation-rhel-repo>`
|
||||
as well as a COPR_ repository.
|
||||
We recommend using ZeroMQ 4 where available. SaltStack provides ZeroMQ 4.0.5
|
||||
and pyzmq 14.5.0 in the :ref:`SaltStack Repository <installation-rhel-repo>`
|
||||
as well as a separate `zeromq4 COPR`_ repository.
|
||||
|
||||
.. _COPR: http://copr.fedorainfracloud.org/coprs/saltstack/zeromq4/
|
||||
.. _`zeromq4 COPR`: http://copr.fedorainfracloud.org/coprs/saltstack/zeromq4/
|
||||
|
||||
If this repo is added *before* Salt is installed, then installing either
|
||||
``salt-master`` or ``salt-minion`` will automatically pull in ZeroMQ 4.0.4, and
|
||||
additional states to upgrade ZeroMQ and pyzmq are unnecessary.
|
||||
If this repository is added *before* Salt is installed, then installing either
|
||||
``salt-master`` or ``salt-minion`` will automatically pull in ZeroMQ 4.0.5, and
|
||||
additional steps to upgrade ZeroMQ and pyzmq are unnecessary.
|
||||
|
||||
.. warning:: RHEL/CentOS 5 Users
|
||||
Using COPR repos on RHEL/CentOS 5 requires that the ``python-hashlib``
|
||||
|
@ -242,11 +218,10 @@ additional states to upgrade ZeroMQ and pyzmq are unnecessary.
|
|||
because YUM will not be able to process the SHA256 checksums used by COPR.
|
||||
|
||||
.. note::
|
||||
For RHEL/CentOS 5 installations, if using the new repository to install
|
||||
Salt (as detailed :ref:`above <installation-rhel-5>`), then it is not
|
||||
necessary to enable the zeromq4 COPR, as the new EL5 repository includes
|
||||
ZeroMQ 4.
|
||||
|
||||
For RHEL/CentOS 5 installations, if using the SaltStack repo or Fedora COPR
|
||||
to install Salt (as described :ref:`above <installation-rhel-repo>`),
|
||||
then it is not necessary to enable the `zeromq4 COPR`_, because those
|
||||
repositories already include ZeroMQ 4.
|
||||
|
||||
Package Management
|
||||
==================
|
||||
|
@ -263,34 +238,66 @@ dependency.
|
|||
Post-installation tasks
|
||||
=======================
|
||||
|
||||
**Master**
|
||||
Master
|
||||
------
|
||||
|
||||
To have the Master start automatically at boot time:
|
||||
|
||||
**RHEL/CentOS 5 and 6**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
chkconfig salt-master on
|
||||
|
||||
**RHEL/CentOS 7**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
systemctl enable salt-master.service
|
||||
|
||||
To start the Master:
|
||||
|
||||
**RHEL/CentOS 5 and 6**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
service salt-master start
|
||||
|
||||
**Minion**
|
||||
**RHEL/CentOS 7**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
systemctl start salt-master.service
|
||||
|
||||
Minion
|
||||
------
|
||||
|
||||
To have the Minion start automatically at boot time:
|
||||
|
||||
**RHEL/CentOS 5 and 6**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
chkconfig salt-minion on
|
||||
|
||||
**RHEL/CentOS 7**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
systemctl enable salt-minion.service
|
||||
|
||||
To start the Minion:
|
||||
|
||||
**RHEL/CentOS 5 and 6**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
service salt-minion start
|
||||
|
||||
**RHEL/CentOS 7**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
systemctl start salt-minion.service
|
||||
|
||||
Now go to the :doc:`Configuring Salt</ref/configuration/index>` page.
|
||||
|
|
|
@ -26,7 +26,7 @@ The Orchestrate Runner
|
|||
|
||||
The Orchestrate Runner was added with the intent to eventually deprecate the
|
||||
OverState system, however the OverState will still be maintained until Salt
|
||||
Boron.
|
||||
2015.8.0.
|
||||
|
||||
The orchestrate runner generalizes the Salt state system to a Salt master
|
||||
context. Whereas the ``state.sls``, ``state.highstate``, et al functions are
|
||||
|
|
|
@ -361,6 +361,13 @@ can be created like this:
|
|||
|
||||
salt '*' state.highstate pillar='["cheese", "milk", "bread"]'
|
||||
|
||||
.. note::
|
||||
|
||||
Be aware that when sending sensitive data via pillar on the command-line
|
||||
that the publication containing that data will be received by all minions
|
||||
and will not be restricted to the targeted minions. This may represent
|
||||
a security concern in some cases.
|
||||
|
||||
|
||||
Master Config In Pillar
|
||||
=======================
|
||||
|
|
|
@ -466,7 +466,7 @@ Configurable Trunk/Branches/Tags Paths
|
|||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Prior to this release, the paths where trunk, branches, and tags were located
|
||||
could only be in directores named "trunk", "branches", and "tags" directly
|
||||
could only be in directories named "trunk", "branches", and "tags" directly
|
||||
under the root of the repository. Three new config parameters
|
||||
(:conf_master:`svnfs_trunk`, :conf_master:`svnfs_branches`, and
|
||||
:conf_master:`svnfs_tags`) allow SVN repositories which are laid out
|
||||
|
|
|
@ -24,13 +24,13 @@ Changes:
|
|||
|
||||
- Various fixes to the Windows installation scripts
|
||||
|
||||
- Fix issue where the syndic would not correctly propogate loads to the master
|
||||
- Fix issue where the syndic would not correctly propagate loads to the master
|
||||
job cache.
|
||||
|
||||
- Improve error handling on invalid /etc/network/interfaces file in salt
|
||||
networking modules
|
||||
|
||||
- Fix bug where a reponse status was not checked for in fileclient.get_url
|
||||
- Fix bug where a response status was not checked for in fileclient.get_url
|
||||
|
||||
- Enable eauth when running salt in batch mode
|
||||
|
||||
|
|
|
@ -33,13 +33,13 @@ Changes:
|
|||
|
||||
- Various fixes to the Windows installation scripts
|
||||
|
||||
- Fix issue where the syndic would not correctly propogate loads to the master
|
||||
- Fix issue where the syndic would not correctly propagate loads to the master
|
||||
job cache.
|
||||
|
||||
- Improve error handling on invalid /etc/network/interfaces file in salt
|
||||
networking modules
|
||||
|
||||
- Fix bug where a reponse status was not checked for in fileclient.get_url
|
||||
- Fix bug where a response status was not checked for in fileclient.get_url
|
||||
|
||||
- Enable eauth when running salt in batch mode
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
|
|||
* ebff1ff Merge pull request `#23956`_ from rallytime/`bp-23906`_
|
||||
* 9d87fd3 add proper marker for format argument
|
||||
|
||||
* 197688e Added exception handler to trap the RuntimeError raised when Depends.enforce_dependency() class method fires unsuccessfully. There appears to be no synchronization within the Depends decorator class wrt the class global dependency_dict which results in incomplete population of any loader instantiation occuring at the time of one of these exceptions.
|
||||
* 197688e Added exception handler to trap the RuntimeError raised when Depends.enforce_dependency() class method fires unsuccessfully. There appears to be no synchronization within the Depends decorator class wrt the class global dependency_dict which results in incomplete population of any loader instantiation occurring at the time of one of these exceptions.
|
||||
|
||||
- **PR** `#23955`_: (*rallytime*) Backport `#19305`_ to 2015.5
|
||||
@ *2015-05-20T03:03:55Z*
|
||||
|
|
|
@ -84,7 +84,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
|
|||
@ *2015-06-01T17:45:36Z*
|
||||
|
||||
* 02bfb25 Merge pull request `#24281`_ from steverweber/ipmi_docfix
|
||||
* dd36f2c yaml formating
|
||||
* dd36f2c yaml formatting
|
||||
|
||||
* f6deef3 include api_kg kwarg in ipmi state
|
||||
|
||||
|
@ -874,7 +874,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
|
|||
**PR** `#24015`_: (*YanChii*) minor improvement of solarisips docs & fix typos
|
||||
| refs: `#24039`_
|
||||
* d909781 Merge pull request `#24039`_ from rallytime/`bp-24015`_
|
||||
* 6bfaa94 minor improovement of solarisips docs & fix typos
|
||||
* 6bfaa94 minor improvement of solarisips docs & fix typos
|
||||
|
||||
**PR** `#24038`_: (*rallytime*) Backport `#19599`_ to 2015.5
|
||||
@ *2015-05-21T23:43:10Z*
|
||||
|
@ -913,7 +913,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
|
|||
|
||||
* 1dc67e5 lxc: versionadded
|
||||
|
||||
* fcad7cb lxc: states improvments
|
||||
* fcad7cb lxc: states improvements
|
||||
|
||||
* 644bd72 lxc: more consistence for profiles
|
||||
|
||||
|
|
|
@ -1112,7 +1112,7 @@ Changes:
|
|||
- **PR** `#25326`_: (*rallytime*) Back-port `#20972`_ to 2015.5
|
||||
@ *2015-07-10T18:49:44Z*
|
||||
|
||||
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesnt work with salt-cloud 2014.7.0
|
||||
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesn't work with salt-cloud 2014.7.0
|
||||
| refs: `#20972`_ `#25326`_
|
||||
- **PR** `#20972`_: (*JohannesEbke*) Fix interface cleanup when using AssociatePublicIpAddress in `#19288`_
|
||||
| refs: `#25326`_
|
||||
|
@ -1304,7 +1304,7 @@ Changes:
|
|||
- **ISSUE** `#24979`_: (*mavenAtHouzz*) [Discussion] Support for more than 1 netapi.rest_tornado server process
|
||||
| refs: `#25149`_
|
||||
|
||||
- **PR** `#25120`_: (*d--j*) add missing continue for exeption case
|
||||
- **PR** `#25120`_: (*d--j*) add missing continue for exception case
|
||||
@ *2015-07-02T19:38:45Z*
|
||||
|
||||
- **PR** `#25117`_: (*basepi*) Fix fileclient.is_cached
|
||||
|
|
|
@ -1110,7 +1110,7 @@ Changes:
|
|||
- **PR** `#25326`_: (*rallytime*) Back-port `#20972`_ to 2015.5
|
||||
@ *2015-07-10T18:49:44Z*
|
||||
|
||||
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesnt work with salt-cloud 2014.7.0
|
||||
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesn't work with salt-cloud 2014.7.0
|
||||
| refs: `#20972`_ `#25326`_
|
||||
- **PR** `#20972`_: (*JohannesEbke*) Fix interface cleanup when using AssociatePublicIpAddress in `#19288`_
|
||||
| refs: `#25326`_
|
||||
|
@ -1302,7 +1302,7 @@ Changes:
|
|||
- **ISSUE** `#24979`_: (*mavenAtHouzz*) [Discussion] Support for more than 1 netapi.rest_tornado server process
|
||||
| refs: `#25149`_
|
||||
|
||||
- **PR** `#25120`_: (*d--j*) add missing continue for exeption case
|
||||
- **PR** `#25120`_: (*d--j*) add missing continue for exception case
|
||||
@ *2015-07-02T19:38:45Z*
|
||||
|
||||
- **PR** `#25117`_: (*basepi*) Fix fileclient.is_cached
|
||||
|
|
|
@ -256,7 +256,7 @@ Changes:
|
|||
|
||||
- **PR** `#27050`_: (*twangboy*) Turned multiprocessing on
|
||||
|
||||
- **PR** `#27086`_: (*techhat*) Document develoment of SPM loader modules
|
||||
- **PR** `#27086`_: (*techhat*) Document development of SPM loader modules
|
||||
|
||||
- **PR** `#26941`_: (*msteed*) Make elasticsearch work as master job cache
|
||||
|
||||
|
|
|
@ -2,6 +2,19 @@
|
|||
Salt 2015.8.4 Release Notes
|
||||
===========================
|
||||
|
||||
Known Issues
|
||||
============
|
||||
|
||||
``in_`` requisites (:issue:`30820`)
|
||||
|
||||
This issue affects all users targeting an explicit ``- name: <name>`` with a ``_in``
|
||||
requisite (such as ``watch_in`` or ``require_in``). If you are not using explicit ``-
|
||||
name: <name>`` arguments, are targeting with the state ID instead of the name,
|
||||
or are not using ``_in`` requisites, then you should be safe to upgrade to
|
||||
2015.8.4.
|
||||
|
||||
This issue is resolved in the :ref:`2015.8.5 <2015.8.5>` release.
|
||||
|
||||
Security Fix
|
||||
============
|
||||
|
||||
|
@ -146,7 +159,7 @@ Changes:
|
|||
|
||||
- **PR** `#30349`_: (*rallytime*) Back-port `#30347`_ to 2015.8
|
||||
|
||||
- **PR** `#30354`_: (*anlutro*) Make sure all ignore_missing SLSes are catched
|
||||
- **PR** `#30354`_: (*anlutro*) Make sure all ignore_missing SLSes are caught
|
||||
|
||||
- **PR** `#30356`_: (*nmadhok*) Adding code author
|
||||
|
||||
|
@ -308,7 +321,7 @@ Changes:
|
|||
|
||||
- **PR** `#30033`_: (*rallytime*) Back-port `#29876`_ to 2015.8
|
||||
|
||||
- **PR** `#30029`_: (*terminalmage*) git.latest: Fix handling of nonexistant branches
|
||||
- **PR** `#30029`_: (*terminalmage*) git.latest: Fix handling of nonexistent branches
|
||||
|
||||
- **PR** `#30016`_: (*anlutro*) Properly normalize locales in locale.gen_locale
|
||||
|
||||
|
|
49
doc/topics/releases/2015.8.5.rst
Normal file
49
doc/topics/releases/2015.8.5.rst
Normal file
|
@ -0,0 +1,49 @@
|
|||
.. _2015.8.5:
|
||||
|
||||
===========================
|
||||
Salt 2015.8.5 Release Notes
|
||||
===========================
|
||||
|
||||
.. admonition:: About this Release
|
||||
|
||||
Salt 2015.8.5 is identical to the 2015.8.4 release with the addition of
|
||||
a fix for :issue:`30820`, fixed by **PR** `#30833`_. For convenience, the
|
||||
content from the 2015.8.4 release notes is included below.
|
||||
|
||||
.. _`#30833`: https://github.com/saltstack/salt/pull/30833
|
||||
|
||||
Known Issue in ``boto_*`` execution modules
|
||||
===========================================
|
||||
|
||||
This release contains an issue that causes the ``boto_*`` execution modules to
|
||||
display a ``__salt__ not defined`` error (:issue:`30300`). This issue will be
|
||||
fixed in an upcoming release, but can be manually resolved by completing the
|
||||
following:
|
||||
|
||||
1. Download the ``boto_*`` execution modules that you would like to update from
|
||||
the 2015.8 branch of Salt. A complete list of affected modules with the
|
||||
specific changes is available in **PR** `#30867`_.
|
||||
|
||||
A simple way to get the updated modules is to `download
|
||||
<https://github.com/saltstack/salt/archive/2015.8.zip>`_ a zip file of the
|
||||
2015.8 branch from GitHub. The updated modules are in the ``salt\modules``
|
||||
directory.
|
||||
|
||||
2. Copy the ``boto_*`` modules to the ``\srv\salt\_modules`` directory on your
|
||||
Salt master.
|
||||
|
||||
3. Run the following command to sync these modules to all Salt minions:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' saltutil.sync_modules
|
||||
|
||||
|
||||
.. _`#30867`: https://github.com/saltstack/salt/pull/30867/files
|
||||
|
||||
--------------------------
|
||||
|
||||
**2015.8.4 Release Notes**
|
||||
|
||||
.. include:: 2015.8.4.rst
|
||||
:start-line: 16
|
|
@ -150,7 +150,7 @@ Changes to Functions in Git Execution Module
|
|||
convenience and to match the usage of other functions with ``force``
|
||||
arguments.
|
||||
- The ``refspecs`` argument has been added to allow for one or more refspecs to
|
||||
be provided which overide the one(s) specified by the
|
||||
be provided which override the one(s) specified by the
|
||||
**remote.remote_name.fetch** git configuration option.
|
||||
|
||||
:py:func:`git.ls_remote <salt.modules.git.ls_remote>`
|
||||
|
|
|
@ -50,6 +50,12 @@ To match a nodegroup on the CLI, use the ``-N`` command-line option:
|
|||
|
||||
salt -N group1 test.ping
|
||||
|
||||
.. note::
|
||||
|
||||
The ``N@`` classifier cannot be used in compound mathes within the CLI or
|
||||
:term:`top file`, it is only recognized in the :conf_master:`nodegroups`
|
||||
master config file parameter.
|
||||
|
||||
To match a nodegroup in your :term:`top file`, make sure to put ``- match:
|
||||
nodegroup`` on the line directly following the nodegroup name.
|
||||
|
||||
|
|
|
@ -315,7 +315,7 @@ debugging purposes, SSL verification can be turned off.
|
|||
|
||||
CA Bundles
|
||||
~~~~~~~~~~
|
||||
The ``requests`` library has its own method of detecting which CA (certficate
|
||||
The ``requests`` library has its own method of detecting which CA (certificate
|
||||
authority) bundle file to use. Usually this is implemented by the packager for
|
||||
the specific operating system distribution that you are using. However,
|
||||
``urllib2`` requires a little more work under the hood. By default, Salt will
|
||||
|
|
|
@ -35,7 +35,7 @@ we must configure the minions to back-off appropriately when the Master is
|
|||
under heavy load.
|
||||
|
||||
The fourth is caused by masters with little hardware resources in combination
|
||||
with a possible bug in ZeroMQ. At least thats what it looks like till today
|
||||
with a possible bug in ZeroMQ. At least that's what it looks like till today
|
||||
(`Issue 118651 <https://github.com/saltstack/salt/issues/11865>`_,
|
||||
`Issue 5948 <https://github.com/saltstack/salt/issues/5948>`_,
|
||||
`Mail thread <https://groups.google.com/forum/#!searchin/salt-users/lots$20of$20minions/salt-users/WxothArv2Do/t12MigMQDFAJ>`_)
|
||||
|
@ -214,6 +214,23 @@ influence the key-size can have.
|
|||
Downsizing the Salt Master's key is not that important, because the minions
|
||||
do not encrypt as many messages as the Master does.
|
||||
|
||||
In installations with large or with complex pillar files, it is possible
|
||||
for the master to exhibit poor performance as a result of having to render
|
||||
many pillar files at once. This exhibit itself in a number of ways, both
|
||||
as high load on the master and on minions which block on waiting for their
|
||||
pillar to be delivered to them.
|
||||
|
||||
To reduce pillar rendering times, it is possible to cache pillars on the
|
||||
master. To do this, see the set of master configuration options which
|
||||
are prefixed with `pillar_cache`.
|
||||
|
||||
.. note::
|
||||
|
||||
Caching pillars on the master may introduce security considerations.
|
||||
Be certain to read caveats outlined in the master configuration file
|
||||
to understand how pillar caching may affect a master's ability to
|
||||
protect sensitive data!
|
||||
|
||||
The Master is disk IO bound
|
||||
---------------------------
|
||||
|
||||
|
|
|
@ -219,7 +219,7 @@ container-by-container basis, for instance using the ``nic_opts`` argument to
|
|||
.. warning::
|
||||
|
||||
The ``ipv4``, ``ipv6``, ``gateway``, and ``link`` (bridge) settings in
|
||||
network profiles / nic_opts will only work if the container doesnt redefine
|
||||
network profiles / nic_opts will only work if the container doesn't redefine
|
||||
the network configuration (for example in
|
||||
``/etc/sysconfig/network-scripts/ifcfg-<interface_name>`` on RHEL/CentOS,
|
||||
or ``/etc/network/interfaces`` on Debian/Ubuntu/etc.). Use these with
|
||||
|
|
|
@ -180,7 +180,13 @@ copy of the repository cache. Command examples are as follows:
|
|||
Creating a Package Definition SLS File
|
||||
======================================
|
||||
|
||||
The package definition file should look similar to this example for Firefox:
|
||||
The package definition file is a yaml file that contains all the information
|
||||
needed to install a piece of software using salt. It defines information about
|
||||
the package to include version, full name, flags required for the installer and
|
||||
uninstaller, whether or not to use the windows task scheduler to install the
|
||||
package, where to find the installation package, etc.
|
||||
|
||||
Take a look at this example for Firefox:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
|
@ -210,12 +216,48 @@ The package definition file should look similar to this example for Firefox:
|
|||
uninstaller: '%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe'
|
||||
uninstall_flags: '/S'
|
||||
|
||||
More examples can be found at https://github.com/saltstack/salt-winrepo-ng
|
||||
Each software definition file begins with a package name for the software. As in
|
||||
the example above ``firefox``. The next line is indented two spaces and contains
|
||||
the version to be defined. As in the example above, a software definition file
|
||||
can define multiple versions for the same piece of software. The lines following
|
||||
the version are indented two more spaces and contain all the information needed
|
||||
to install that package.
|
||||
|
||||
The version number and ``full_name`` need to match the output from ``pkg.list_pkgs``
|
||||
so that the status can be verified when running highstate.
|
||||
Note: It is still possible to successfully install packages using ``pkg.install``
|
||||
even if they don't match which can make this hard to troubleshoot.
|
||||
.. warning:: The package name and the ``full_name`` must be unique to all
|
||||
other packages in the software repository.
|
||||
|
||||
The version line is the version for the package to be installed. It is used when
|
||||
you need to install a specific version of a piece of software.
|
||||
|
||||
.. warning:: The version must be enclosed in quotes, otherwise the yaml parser
|
||||
will remove trailing zeros.
|
||||
|
||||
.. note:: There are unique situations where previous versions are unavailable.
|
||||
Take Google Chrome for example. There is only one url provided for a standalone
|
||||
installation of Google Chrome. (https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi)
|
||||
When a new version is released, the url just points to the new version. To handle
|
||||
situations such as these, set the version to `latest`. Salt will install the
|
||||
version of chrome at the URL and report that version. Here's an example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
chrome:
|
||||
latest:
|
||||
full_name: 'Google Chrome'
|
||||
installer: 'https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi'
|
||||
install_flags: '/qn /norestart'
|
||||
uninstaller: 'https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi'
|
||||
uninstall_flags: '/qn /norestart'
|
||||
msiexec: True
|
||||
locale: en_US
|
||||
reboot: False
|
||||
|
||||
Available parameters are as follows:
|
||||
|
||||
:param str full_name: The Full Name for the software as shown in "Programs and
|
||||
Features" in the control panel. You can also get this information by installing
|
||||
the package manually and then running ``pkg.list_pkgs``. Here's an example of
|
||||
the output from ``pkg.list_pkgs``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
@ -241,9 +283,13 @@ even if they don't match which can make this hard to troubleshoot.
|
|||
Salt Minion 0.16.0:
|
||||
0.16.0
|
||||
|
||||
If any of these preinstalled packages already exist in winrepo the full_name
|
||||
will be automatically renamed to their package name during the next update
|
||||
(running highstate or installing another package).
|
||||
Notice the Full Name for Firefox: Mozilla Firefox 17.0.0 (x86 en-US). That's
|
||||
exactly what's in the ``full_name`` parameter in the software definition file.
|
||||
|
||||
If any of the software insalled on the machine matches one of the software
|
||||
definition files in the repository the full_name will be automatically renamed
|
||||
to the package name. The example below shows the ``pkg.list_pkgs`` for a
|
||||
machine that already has Mozilla Firefox 17.0.1 installed.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
@ -268,15 +314,46 @@ will be automatically renamed to their package name during the next update
|
|||
nsclient:
|
||||
0.3.9.328
|
||||
|
||||
Add ``msiexec: True`` if using an MSI installer requiring the use of ``msiexec
|
||||
/i`` to install and ``msiexec /x`` to uninstall.
|
||||
.. important:: The version number and ``full_name`` need to match the output
|
||||
from ``pkg.list_pkgs`` so that the status can be verified when running
|
||||
highstate.
|
||||
|
||||
The ``install_flags`` and ``uninstall_flags`` are flags passed to the software
|
||||
installer to cause it to perform a silent install. These can often be found by
|
||||
adding ``/?`` or ``/h`` when running the installer from the command line. A
|
||||
great resource for finding these silent install flags can be found on the WPKG
|
||||
.. note:: It is still possible to successfully install packages using
|
||||
``pkg.install`` even if they don't match. This can make troubleshooting
|
||||
difficult so be careful.
|
||||
|
||||
:param str installer: The path to the ``.exe`` or ``.msi`` to use to install the
|
||||
package. This can be a path or a URL. If it is a URL or a salt path (salt://),
|
||||
the package will be cached locally and then executed. If it is a path to a file
|
||||
on disk or a file share, it will be executed directly.
|
||||
|
||||
:param str install_flags: Any flags that need to be passed to the installer to
|
||||
make it perform a silent install. These can often be found by adding ``/?`` or
|
||||
``/h`` when running the installer from the command line. A great resource for
|
||||
finding these silent install flags can be found on the WPKG project's wiki_:
|
||||
|
||||
Salt will not return if the installer is waiting for user input so these are
|
||||
important.
|
||||
|
||||
:param str uninstaller: The path to the program used to uninstall this software.
|
||||
This can be the path to the same `exe` or `msi` used to install the software. It
|
||||
can also be a GUID. You can find this value in the registry under the following
|
||||
keys:
|
||||
|
||||
- Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall
|
||||
- Software\\Wow6432None\\Microsoft\\Windows\\CurrentVersion\\Uninstall
|
||||
|
||||
:param str uninstall_flags: Any flags that need to be passed to the uninstaller
|
||||
to make it perform a silent uninstall. These can often be found by adding
|
||||
``/?`` or ``/h`` when running the uninstaller from the command line. A great
|
||||
resource for finding these silent install flags can be found on the WPKG
|
||||
project's wiki_:
|
||||
|
||||
Salt will not return if the uninstaller is waiting for user input so these are
|
||||
important.
|
||||
|
||||
Here are some examples of installer and uninstaller settings:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
7zip:
|
||||
|
@ -303,9 +380,19 @@ Alternatively the ``uninstaller`` can also simply repeat the URL of the msi file
|
|||
uninstaller: salt://win/repo/7zip/7z920-x64.msi
|
||||
uninstall_flags: '/qn /norestart'
|
||||
|
||||
Add ``cache_dir: True`` when the installer requires multiple source files. The
|
||||
directory containing the installer file will be recursively cached on the minion.
|
||||
Only applies to salt: installer URLs.
|
||||
:param bool msiexec: This tells salt to use ``msiexec /i`` to install the
|
||||
package and ``msiexec /x`` to uninstall. This is for `.msi` installations.
|
||||
|
||||
:param bool allusers: This parameter is specific to `.msi` installations. It
|
||||
tells `msiexec` to install the software for all users. The default is True.
|
||||
|
||||
:param bool cache_dir: If true, the entire directory where the installer resides
|
||||
will be recursively cached. This is useful for installers that depend on other
|
||||
files in the same directory for installation.
|
||||
|
||||
.. note:: Only applies to salt: installer URLs.
|
||||
|
||||
Here's an example for a software package that has dependent files:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
|
@ -317,6 +404,16 @@ Only applies to salt: installer URLs.
|
|||
install_flags: '/ACTION=install /IACCEPTSQLSERVERLICENSETERMS /Q'
|
||||
cache_dir: True
|
||||
|
||||
:param bool use_scheduler: If true, windows will use the task scheduler to run
|
||||
the installation. This is useful for running the salt installation itself as
|
||||
the installation process kills any currently running instances of salt.
|
||||
|
||||
:param bool reboot: Not implemented
|
||||
|
||||
:param str local: Not implemented
|
||||
|
||||
Examples can be found at https://github.com/saltstack/salt-winrepo-ng
|
||||
|
||||
|
||||
.. _standalone-winrepo:
|
||||
|
||||
|
|
|
@ -178,13 +178,13 @@ sudo $MAKE install
|
|||
|
||||
echo -n -e "\033]0;Build_Evn: OpenSSL\007"
|
||||
|
||||
PKGURL="http://openssl.org/source/openssl-1.0.2e.tar.gz"
|
||||
PKGDIR="openssl-1.0.2e"
|
||||
PKGURL="http://openssl.org/source/openssl-1.0.2f.tar.gz"
|
||||
PKGDIR="openssl-1.0.2f"
|
||||
|
||||
download $PKGURL
|
||||
|
||||
echo "################################################################################"
|
||||
echo "Building OpenSSL 1.0.2e"
|
||||
echo "Building OpenSSL 1.0.2f"
|
||||
echo "################################################################################"
|
||||
cd $PKGDIR
|
||||
./Configure darwin64-x86_64-cc --prefix=/opt/salt --openssldir=/opt/salt/openssl
|
||||
|
@ -193,49 +193,6 @@ $MAKE test
|
|||
sudo $MAKE install
|
||||
|
||||
|
||||
############################################################################
|
||||
# Download and install GDBM
|
||||
############################################################################
|
||||
|
||||
echo -n -e "\033]0;Build_Evn: GDBM\007"
|
||||
|
||||
PKGURL="ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.11.tar.gz"
|
||||
PKGDIR="gdbm-1.11"
|
||||
|
||||
download $PKGURL
|
||||
|
||||
echo "################################################################################"
|
||||
echo "Building gdbm 1.11"
|
||||
echo "################################################################################"
|
||||
cd $PKGDIR
|
||||
./configure --prefix=/opt/salt --enable-libgdbm-compat
|
||||
$MAKE
|
||||
$MAKE check
|
||||
sudo $MAKE install
|
||||
|
||||
|
||||
############################################################################
|
||||
# Download and install Gnu Readline
|
||||
############################################################################
|
||||
|
||||
echo -n -e "\033]0;Build_Evn: Gnu Readline\007"
|
||||
|
||||
PKGURL="ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz"
|
||||
PKGDIR="readline-6.3"
|
||||
|
||||
download $PKGURL
|
||||
|
||||
curl -O# ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz
|
||||
|
||||
echo "################################################################################"
|
||||
echo "Building GNU Readline 6.3"
|
||||
echo "################################################################################"
|
||||
cd $PKGDIR
|
||||
./configure --prefix=/opt/salt
|
||||
$MAKE
|
||||
sudo $MAKE install
|
||||
|
||||
|
||||
############################################################################
|
||||
# Download and install Python
|
||||
############################################################################
|
||||
|
@ -255,47 +212,13 @@ cd $PKGDIR
|
|||
./configure --prefix=/opt/salt --enable-shared --enable-toolbox-glue --with-ensurepip=install
|
||||
$MAKE
|
||||
# $MAKE test
|
||||
sudo $MAKE install
|
||||
sudo -H $MAKE install
|
||||
|
||||
|
||||
############################################################################
|
||||
# Download and install CMake
|
||||
# upgrade pip
|
||||
############################################################################
|
||||
|
||||
echo -n -e "\033]0;Build_Evn: CMake\007"
|
||||
|
||||
PKGURL="https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz"
|
||||
PKGDIR="cmake-3.4.1"
|
||||
|
||||
download $PKGURL
|
||||
|
||||
echo "################################################################################"
|
||||
echo "Building CMake 3.4.1"
|
||||
echo "################################################################################"
|
||||
cd $PKGDIR
|
||||
./bootstrap
|
||||
$MAKE
|
||||
sudo $MAKE install
|
||||
|
||||
|
||||
############################################################################
|
||||
# Download and install libgit2
|
||||
############################################################################
|
||||
|
||||
echo -n -e "\033]0;Build_Evn: libgit2\007"
|
||||
|
||||
PKGURL="https://codeload.github.com/libgit2/libgit2/tar.gz/v0.23.4"
|
||||
PKGDIR="libgit2-0.23.4"
|
||||
|
||||
download $PKGURL
|
||||
|
||||
echo "################################################################################"
|
||||
echo "Building libgit2 0.23.4"
|
||||
echo "################################################################################"
|
||||
cd $PKGDIR
|
||||
mkdir build && cd build
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/salt
|
||||
sudo cmake --build . --target install
|
||||
sudo -H /opt/salt/bin/pip install --upgrade pip
|
||||
|
||||
|
||||
############################################################################
|
||||
|
|
|
@ -72,7 +72,7 @@ fi
|
|||
echo -n -e "\033]0;Build_Pkg: Clean Staging Area\007"
|
||||
|
||||
# Clean folder in the staging area
|
||||
rm -rf $PKGDIR
|
||||
rm -rdf $PKGDIR
|
||||
mkdir -p $PKGDIR
|
||||
|
||||
PKGRESOURCES=$SRCDIR/pkg/osx
|
||||
|
@ -126,6 +126,19 @@ cp $PKGRESOURCES/scripts/com.saltstack.salt.master.plist $PKGDIR/Library/LaunchD
|
|||
cp $PKGRESOURCES/scripts/com.saltstack.salt.syndic.plist $PKGDIR/Library/LaunchDaemons
|
||||
cp $PKGRESOURCES/scripts/com.saltstack.salt.api.plist $PKGDIR/Library/LaunchDaemons
|
||||
|
||||
############################################################################
|
||||
# Remove pkg-config files from the distro
|
||||
############################################################################
|
||||
|
||||
echo -n -e "\033]0;Build_Pkg: Remove pkg-config files\007"
|
||||
|
||||
sudo rm -rdf $PKGDIR/opt/salt/bin/pkg-config
|
||||
sudo rm -rdf $PKGDIR/opt/salt/lib/pkgconfig
|
||||
sudo rm -rdf $PKGDIR/opt/salt/lib/engines
|
||||
sudo rm -rdf $PKGDIR/opt/salt/share/aclocal
|
||||
sudo rm -rdf $PKGDIR/opt/salt/share/doc
|
||||
sudo rm -rdf $PKGDIR/opt/salt/share/man/man1/pkg-config.1
|
||||
|
||||
############################################################################
|
||||
# Copy Additional Resources from Salt Repo to the Package Directory
|
||||
############################################################################
|
||||
|
@ -138,8 +151,8 @@ cp $PKGRESOURCES/*.rtf $PKGDIR/resources
|
|||
|
||||
# I can't get this to work for some reason
|
||||
mkdir -p $PKGDIR/scripts
|
||||
cp $PKGRESOURCES/scripts/postflight.sh $PKGDIR/scripts
|
||||
cp $PKGRESOURCES/scripts/preflight.sh $PKGDIR/scripts
|
||||
cp $PKGRESOURCES/scripts/postinstall $PKGDIR/scripts
|
||||
cp $PKGRESOURCES/scripts/preinstall $PKGDIR/scripts
|
||||
|
||||
############################################################################
|
||||
# Copy Config Files from Salt Repo to the Package Directory
|
||||
|
@ -152,7 +165,7 @@ cp $SRCDIR/conf/minion $PKGDIR/etc/salt/minion.dist
|
|||
cp $SRCDIR/conf/master $PKGDIR/etc/salt/master.dist
|
||||
|
||||
############################################################################
|
||||
# I don't know what this does, it doesn't look like the .xml file goes anywhere
|
||||
# Add Version to distribution.xml
|
||||
############################################################################
|
||||
|
||||
echo -n -e "\033]0;Build_Pkg: Add Version to .xml\007"
|
||||
|
@ -170,6 +183,7 @@ sed -i '' $SEDSTR distribution.xml
|
|||
echo -n -e "\033]0;Build_Pkg: Build Package\007"
|
||||
|
||||
pkgbuild --root $PKGDIR \
|
||||
--scripts $PKGDIR/scripts \
|
||||
--identifier=com.saltstack.salt \
|
||||
--version=$VERSION \
|
||||
--ownership=recommended salt-src-$VERSION.pkg
|
||||
|
@ -177,6 +191,5 @@ pkgbuild --root $PKGDIR \
|
|||
productbuild --resources=$PKGDIR/resources \
|
||||
--distribution=distribution.xml \
|
||||
--package-path=salt-src-$VERSION.pkg \
|
||||
--scripts $PKGDIR/scripts \
|
||||
--version=$VERSION salt-$VERSION.pkg
|
||||
|
||||
|
|
|
@ -1,14 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<installer-gui-script minSpecVersion="1">
|
||||
<installer-gui-script minSpecVersion="2">
|
||||
<title>Salt @VERSION@</title>
|
||||
<organization>com.saltstack.salt</organization>
|
||||
<domains enable_localSystem="true"/>
|
||||
<options rootVolumeOnly="true" />
|
||||
<!-- Define minimum system requirements -->
|
||||
<volume-check>
|
||||
<allowed-os-versions>
|
||||
<os-version min="10.11" />
|
||||
</allowed-os-versions>
|
||||
</volume-check>
|
||||
<options rootVolumeOnly="true"
|
||||
hostArchitectures="x86_64" />
|
||||
<domains enable_localSystem="true" />
|
||||
<!-- Define background image -->
|
||||
<background file="saltstack.png"
|
||||
mime-type="image/png"
|
||||
scaling="proportional" />
|
||||
<!-- Define documents displayed at various steps -->
|
||||
<background file="saltstack.png" mime-type="image/png" scaling="proportional"/>
|
||||
<welcome file="welcome.rtf" mime-type="text/rtf" />
|
||||
<license file="license.rtf" mime-type="text/rtf" />
|
||||
<conclusion file="conclusion.rtf" mime-type="text/rtf" />
|
||||
<welcome file="welcome.rtf"
|
||||
mime-type="text/rtf" />
|
||||
<license file="license.rtf"
|
||||
mime-type="text/rtf" />
|
||||
<conclusion file="conclusion.rtf"
|
||||
mime-type="text/rtf" />
|
||||
<!-- List all component packages -->
|
||||
<pkg-ref id="com.saltstack.salt"
|
||||
version="@VERSION@"
|
||||
|
@ -16,15 +29,14 @@
|
|||
<!-- List them again here. They can now be organized
|
||||
as a hierarchy if you want. -->
|
||||
<choices-outline>
|
||||
<line choice="com.saltstack.salt"/>
|
||||
<line choice="com.saltstack.salt" />
|
||||
</choices-outline>
|
||||
<!-- Define each choice above -->
|
||||
<choice
|
||||
id="com.saltstack.salt"
|
||||
visible="false"
|
||||
title="Salt @VERSION@"
|
||||
description="Salt @VERSION@"
|
||||
start_selected="true">
|
||||
<pkg-ref id="com.saltstack.salt"/>
|
||||
<choice id="com.saltstack.salt"
|
||||
visible="false"
|
||||
title="Salt @VERSION@"
|
||||
description="Salt @VERSION@"
|
||||
start_selected="true">
|
||||
<pkg-ref id="com.saltstack.salt" />
|
||||
</choice>
|
||||
</installer-gui-script>
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf130
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
|
||||
{\fonttbl\f0\froman\fcharset0 Times-Roman;}
|
||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\vieww10800\viewh8400\viewkind0
|
||||
\deftab720
|
||||
\pard\pardeftab720\sl560\sa321\partightenfactor0
|
||||
|
||||
\f0\b\fs48 \cf2 \expnd0\expndtw0\kerning0
|
||||
\outl0\strokewidth0 \strokec2 Salt - Remote execution system\
|
||||
\f0\b\fs48 \cf0 \expnd0\expndtw0\kerning0
|
||||
Salt - Remote execution system\
|
||||
\pard\pardeftab720\sl280\sa240\partightenfactor0
|
||||
|
||||
\b0\fs24 \cf2 Copyright 2014-2015 SaltStack Team\
|
||||
\b0\fs24 \cf0 Copyright 2014-2016 SaltStack Team\
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\
|
||||
http://www.apache.org/licenses/LICENSE-2.0\
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\
|
||||
}
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.}
|
|
@ -1,31 +1,31 @@
|
|||
apache-libcloud==0.19.0
|
||||
backports.ssl_match_hostname==3.4.0.2
|
||||
apache-libcloud==0.20.1
|
||||
backports.ssl_match_hostname==3.5.0.1
|
||||
backports_abc==0.4
|
||||
certifi
|
||||
cffi==1.3.1
|
||||
CherryPy==3.2.3
|
||||
click==4.1
|
||||
enum34==1.1.1
|
||||
cffi==1.5.0
|
||||
CherryPy==4.0.0
|
||||
click==6.2
|
||||
enum34==1.1.2
|
||||
gitdb==0.6.4
|
||||
GitPython==1.0.1
|
||||
idna==2.0
|
||||
ioflo==1.4.9
|
||||
ipaddress==1.0.15
|
||||
ioflo==1.5.0
|
||||
ipaddress==1.0.16
|
||||
Jinja2==2.8
|
||||
libnacl==1.4.3
|
||||
libnacl==1.4.4
|
||||
linode-python==1.1.1
|
||||
Mako==1.0.3
|
||||
MarkupSafe==0.23
|
||||
msgpack-python==0.4.6
|
||||
msgpack-python==0.4.7
|
||||
pyasn1==0.1.9
|
||||
pycparser==2.14
|
||||
pycrypto==2.6.1
|
||||
python_dateutil==2.4.2
|
||||
python-dateutil==2.4.2
|
||||
python-gnupg==0.3.8
|
||||
PyYAML==3.11
|
||||
pyzmq==15.1.0
|
||||
pyzmq==15.2.0
|
||||
raet==0.6.5
|
||||
requests==2.9.0
|
||||
requests==2.9.1
|
||||
singledispatch==3.4.0.3
|
||||
six==1.10.0
|
||||
smmap==0.9.0
|
||||
|
|
|
@ -1,4 +1,2 @@
|
|||
cryptography==1.1.2
|
||||
cryptography==1.2.2
|
||||
pyOpenSSL==0.15.1
|
||||
pygit2==0.23.2
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>salt-api</string>
|
||||
<string>com.saltstack.salt.api</string>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>salt-master</string>
|
||||
<string>com.saltstack.salt.master</string>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>salt-minion</string>
|
||||
<string>com.saltstack.salt.minion</string>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>salt-syndic</string>
|
||||
<string>com.saltstack.salt.syndic</string>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
#!/bin/bash
|
||||
###############################################################################
|
||||
#
|
||||
# Title: Post Script for Salt Installation
|
||||
# Authors: Shane Lee
|
||||
# Date: December 2015
|
||||
#
|
||||
# Description: This script copies the minion config file and starts the salt
|
||||
# service
|
||||
#
|
||||
# Requirements:
|
||||
# - None
|
||||
#
|
||||
# Usage:
|
||||
# This script is run as a part of the OSX Salt Installation
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
###############################################################################
|
||||
# Check for existing minion config, copy if it doesn't exist
|
||||
###############################################################################
|
||||
if [ ! -f /etc/salt/minion ]; then
|
||||
cp /etc/salt/minion.dist /etc/salt/minion
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# Register Salt as a service
|
||||
###############################################################################
|
||||
set -e
|
||||
launchctl load "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"
|
67
pkg/osx/scripts/postinstall
Executable file
67
pkg/osx/scripts/postinstall
Executable file
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
###############################################################################
|
||||
#
|
||||
# Title: Post Script for Salt Installation
|
||||
# Authors: Shane Lee
|
||||
# Date: December 2015
|
||||
#
|
||||
# Description: This script copies the minion config file and starts the salt
|
||||
# service
|
||||
#
|
||||
# Requirements:
|
||||
# - None
|
||||
#
|
||||
# Usage:
|
||||
# This script is run as a part of the OSX Salt Installation
|
||||
#
|
||||
###############################################################################
|
||||
echo "Post install started on:" > /tmp/postinstall.txt
|
||||
date >> /tmp/postinstall.txt
|
||||
trap 'quit_on_error $LINENO $BASH_COMMAND' ERR
|
||||
|
||||
quit_on_error() {
|
||||
echo "$(basename $0) caught error on line : $1 command was: $2" >> /tmp/postinstall.txt
|
||||
exit -1
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Check for existing minion config, copy if it doesn't exist
|
||||
###############################################################################
|
||||
if [ ! -f /etc/salt/minion ]; then
|
||||
echo "Config copy: Started..." >> /tmp/postinstall.txt
|
||||
cp /etc/salt/minion.dist /etc/salt/minion
|
||||
echo "Config copy: Successful" >> /tmp/postinstall.txt
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# Register Salt as a service
|
||||
###############################################################################
|
||||
echo "Service start: Started..." >> /tmp/postinstall.txt
|
||||
# launchctl load "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"
|
||||
echo "Service start: Enabling service..." >> /tmp/postinstall.txt
|
||||
launchctl enable system/com.saltstack.salt.minion
|
||||
echo "Service start: Bootstrapping service..." >> /tmp/postinstall.txt
|
||||
launchctl bootstrap system /Library/LaunchDaemons/com.saltstack.salt.minion.plist
|
||||
|
||||
if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
|
||||
echo "Service is running" >> /tmp/postinstall.txt
|
||||
else
|
||||
|
||||
echo "Service start: Kickstarting service..." >> /tmp/postinstall.txt
|
||||
launchctl kickstart -kp system/com.saltstack.salt.minion
|
||||
fi
|
||||
|
||||
echo "Service start: Successful" >> /tmp/postinstall.txt
|
||||
|
||||
echo "Service disable: Disabling Master, Syndic, and API" >> /tmp/postinstall.txt
|
||||
|
||||
launchctl disable system/com.saltstack.salt.master
|
||||
launchctl disable system/com.saltstack.salt.syndic
|
||||
launchctl disable system/com.saltstack.salt.api
|
||||
|
||||
# echo "Path: Adding salt to the path..." >> /tmp/postinstall.txt
|
||||
# echo "/opt/salt/bin" > /etc/paths.d/salt
|
||||
|
||||
echo "Post install completed successfully" >> /tmp/postinstall.txt
|
||||
|
||||
exit 0
|
|
@ -15,11 +15,26 @@
|
|||
# This script is run as a part of the OSX Salt Installation
|
||||
#
|
||||
###############################################################################
|
||||
echo "Preinstall started on:" > /tmp/preinstall.txt
|
||||
date >> /tmp/preinstall.txt
|
||||
trap 'quit_on_error $LINENO $BASH_COMMAND' ERR
|
||||
|
||||
quit_on_error() {
|
||||
echo "$(basename $0) caught error on line : $1 command was: $2" >> /tmp/preinstall.txt
|
||||
exit -1
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Stop the service
|
||||
###############################################################################
|
||||
set -e
|
||||
if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
|
||||
/bin/launchctl unload "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"
|
||||
echo "Stop service: Started..." >> /tmp/preinstall.txt
|
||||
# /bin/launchctl unload "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"
|
||||
launchctl disable system/com.saltstack.salt.minion
|
||||
launchctl bootout system /Library/LaunchDaemons/com.saltstack.salt.minion.plist
|
||||
echo "Stop service: Successful" >> /tmp/preinstall.txt
|
||||
fi
|
||||
|
||||
echo "Preinstall Completed Successfully" >> /tmp/preinstall.txt
|
||||
|
||||
exit 0
|
|
@ -1 +0,0 @@
|
|||
072bbfc3ffe3a838945ce6e7c4bbce267362673c3b870886accdc5a5ee01dbd071604fca6aa519d077676423d37bfe987b71f22f14a194f8d6ec8fb9de0a6049 ./cmake-3.4.1.tar.gz
|
|
@ -1 +0,0 @@
|
|||
272fb65ab9ca0a21e9f0dcfb2c638457e87cbb938c65ee850123474d11f2858496f84d3fa9edca27cd91c7220160cfdb59f90bd46ddc45395514addc9fd4151c ./gdbm-1.11.tar.gz
|
|
@ -1 +0,0 @@
|
|||
b73f114a117ccab284cf5891dac050e3016d28e0b1fc71639442cdb42accef676115af90a12deff4bcc1f599cc0cbdeb38142cbf4570bd7d03634786ad32c95f ./openssl-1.0.2e.tar.gz
|
1
pkg/osx/shasums/openssl-1.0.2f.tar.gz.sha512
Normal file
1
pkg/osx/shasums/openssl-1.0.2f.tar.gz.sha512
Normal file
|
@ -0,0 +1 @@
|
|||
50abf6dc94cafd06e7fd20770808bdc675c88daa369e4f752bd584ab17f72a57357c1ca1eca3c83e6745b5a3c9c73c99dce70adaa904d73f6df4c75bc7138351 ./openssl-1.0.2f.tar.gz
|
|
@ -1 +0,0 @@
|
|||
f70efaf46d570b85c7637172b0ee2eb9a4aa73ba38a62bb45075e665929d9701b96fba0aea6c767fd9a2a0d39dfe8e70ab06da08f8524aee76a7c502f370a401 ./readline-6.3.tar.gz
|
11
pkg/osx/shasums/readme.md
Normal file
11
pkg/osx/shasums/readme.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
ShaSums
|
||||
=======
|
||||
|
||||
This directory contains shasums for files that are downloaded by the `build_env.sh` script.
|
||||
|
||||
The sha's have been created using the following command:
|
||||
|
||||
|
||||
```
|
||||
shasum -a 512 ./<filename> > ./<filename>.sha512
|
||||
```
|
|
@ -1 +0,0 @@
|
|||
f2f6244dfee4dab2dc5ef9607808404467a1f6baa684aa4e24b7116e7e7f63f396eef3282c1bcffbef47f19824731c2887deadbe3b2dad8a075b0639e5965d9e ./v0.23.4
|
|
@ -6,6 +6,7 @@ After=network.target
|
|||
Type=simple
|
||||
LimitNOFILE=8192
|
||||
ExecStart=/usr/bin/salt-api
|
||||
TimeoutStopSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
|
@ -360,11 +360,11 @@ Mon Mar 30 21:41:22 UTC 2015 - aboe76@gmail.com
|
|||
+ Major performance improvements to Saltnado
|
||||
+ Allow KVM module to operate under KVM itself or VMWare Fusion
|
||||
+ Various fixes to the Windows installation scripts
|
||||
+ Fix issue where the syndic would not correctly propogate loads to the master
|
||||
+ Fix issue where the syndic would not correctly propagate loads to the master
|
||||
job cache.
|
||||
+ Improve error handling on invalid /etc/network/interfaces file in salt
|
||||
networking modules
|
||||
+ Fix bug where a reponse status was not checked for in fileclient.get_url
|
||||
+ Fix bug where a response status was not checked for in fileclient.get_url
|
||||
+ Enable eauth when running salt in batch mode
|
||||
+ Increase timeout in Boto Route53 module
|
||||
+ Fix bugs with Salt's 'tar' module option parsing
|
||||
|
|
|
@ -44,6 +44,8 @@ python "%CurrDir%\portable.py" -f "%BinDir%\Scripts\pip2.exe"
|
|||
del /S /Q "%BinDir%\*.pyc"
|
||||
:: Remove all Compiled HTML Help (.chm)
|
||||
del /S /Q "%BinDir%\*.chm"
|
||||
:: Remove all empty text files (they are placeholders for git)
|
||||
del /S /Q "%BinDir%\..\empty.*"
|
||||
|
||||
:: Delete Unused Docs and Modules
|
||||
If Exist "%BinDir%\Doc" rd /S /Q "%BinDir%\Doc"
|
||||
|
|
|
@ -281,7 +281,7 @@ pki_dir: /conf/pki/minion
|
|||
###########################################
|
||||
# Disable multiprocessing support, by default when a minion receives a
|
||||
# publication a new process is spawned and the command is executed therein.
|
||||
multiprocessing: True
|
||||
# multiprocessing: True
|
||||
|
||||
###### Logging settings #####
|
||||
###########################################
|
||||
|
@ -314,7 +314,7 @@ multiprocessing: True
|
|||
# Default: 'warning'
|
||||
#log_level_logfile:
|
||||
#
|
||||
# The date and time format used in log messages. Allowed date/time formating
|
||||
# The date and time format used in log messages. Allowed date/time formatting
|
||||
# can be seen on http://docs.python.org/library/time.html#time.strftime
|
||||
#log_datefmt: '%H:%M:%S'
|
||||
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
|
||||
|
|
|
@ -222,7 +222,7 @@ ShowUnInstDetails show
|
|||
Section "MainSection" SEC01
|
||||
|
||||
SetOutPath "$INSTDIR\"
|
||||
SetOverwrite try
|
||||
SetOverwrite off
|
||||
CreateDirectory $INSTDIR\conf\pki\minion
|
||||
File /r "..\buildenv\"
|
||||
Exec 'icacls c:\salt /inheritance:r /grant:r "BUILTIN\Administrators":(OI)(CI)F /grant:r "NT AUTHORITY\SYSTEM":(OI)(CI)F'
|
||||
|
|
|
@ -9,7 +9,6 @@ from __future__ import absolute_import, print_function, generators
|
|||
import os
|
||||
import copy
|
||||
import glob
|
||||
import inspect
|
||||
import time
|
||||
import signal
|
||||
import logging
|
||||
|
@ -466,16 +465,28 @@ class CloudClient(object):
|
|||
)
|
||||
'''
|
||||
mapper = salt.cloud.Map(self._opts_defaults(action=fun, names=names))
|
||||
if instance:
|
||||
if names:
|
||||
raise SaltCloudConfigError(
|
||||
'Please specify either a list of \'names\' or a single '
|
||||
'\'instance\', but not both.'
|
||||
)
|
||||
names = [instance]
|
||||
|
||||
if names and not provider:
|
||||
self.opts['action'] = fun
|
||||
return mapper.do_action(names, kwargs)
|
||||
if provider:
|
||||
|
||||
if provider and not names:
|
||||
return mapper.do_function(provider, fun, kwargs)
|
||||
else:
|
||||
# This should not be called without either an instance or a
|
||||
# provider.
|
||||
# provider. If both an instance/list of names and a provider
|
||||
# are given, then we also need to exit. We can only have one
|
||||
# or the other.
|
||||
raise SaltCloudConfigError(
|
||||
'Either an instance or a provider must be specified.'
|
||||
'Either an instance (or list of names) or a provider must be '
|
||||
'specified, but not both.'
|
||||
)
|
||||
|
||||
|
||||
|
@ -1488,15 +1499,8 @@ class Cloud(object):
|
|||
ret[alias][driver] = {}
|
||||
|
||||
if kwargs:
|
||||
argnames = inspect.getargspec(self.clouds[fun]).args
|
||||
for _ in inspect.getargspec(self.clouds[fun]).defaults:
|
||||
argnames.pop(0)
|
||||
kws = {}
|
||||
for kwarg in argnames:
|
||||
kws[kwarg] = kwargs.get(kwarg, None)
|
||||
kws['call'] = 'action'
|
||||
ret[alias][driver][vm_name] = self.clouds[fun](
|
||||
vm_name, **kws
|
||||
vm_name, kwargs, call='action'
|
||||
)
|
||||
else:
|
||||
ret[alias][driver][vm_name] = self.clouds[fun](
|
||||
|
|
|
@ -175,16 +175,6 @@ def __virtual__():
|
|||
if get_dependencies() is False:
|
||||
return False
|
||||
|
||||
for provider, details in six.iteritems(__opts__['providers']):
|
||||
if 'ec2' not in details:
|
||||
continue
|
||||
|
||||
parameters = details['ec2']
|
||||
if salt.utils.cloud.check_key_path_and_mode(
|
||||
provider, parameters['private_key']
|
||||
) is False:
|
||||
return False
|
||||
|
||||
return __virtualname__
|
||||
|
||||
|
||||
|
@ -195,7 +185,7 @@ def get_configured_provider():
|
|||
return config.is_provider_configured(
|
||||
__opts__,
|
||||
__active_provider_name__ or __virtualname__,
|
||||
('id', 'key', 'keyname', 'private_key')
|
||||
('id', 'key')
|
||||
)
|
||||
|
||||
|
||||
|
@ -2316,6 +2306,43 @@ def create(vm_=None, call=None):
|
|||
if 'provider' in vm_:
|
||||
vm_['driver'] = vm_.pop('provider')
|
||||
|
||||
# Check for private_key and keyfile name for bootstrapping new instances
|
||||
deploy = config.get_cloud_config_value(
|
||||
'deploy', vm_, __opts__, default=True
|
||||
)
|
||||
win_password = config.get_cloud_config_value(
|
||||
'win_password', vm_, __opts__, default=''
|
||||
)
|
||||
key_filename = config.get_cloud_config_value(
|
||||
'private_key', vm_, __opts__, search_global=False, default=None
|
||||
)
|
||||
if deploy or (deploy and win_password == 'auto'):
|
||||
# The private_key and keyname settings are only needed for bootstrapping
|
||||
# new instances when deploy is True, or when win_password is set to 'auto'
|
||||
# and deploy is also True.
|
||||
if key_filename is None:
|
||||
raise SaltCloudSystemExit(
|
||||
'The required \'private_key\' configuration setting is missing from the '
|
||||
'\'ec2\' driver.'
|
||||
)
|
||||
|
||||
if not os.path.exists(key_filename):
|
||||
raise SaltCloudSystemExit(
|
||||
'The EC2 key file {0!r} does not exist.\n'.format(
|
||||
key_filename
|
||||
)
|
||||
)
|
||||
|
||||
key_mode = str(
|
||||
oct(stat.S_IMODE(os.stat(key_filename).st_mode))
|
||||
)
|
||||
if key_mode not in ('0400', '0600'):
|
||||
raise SaltCloudSystemExit(
|
||||
'The EC2 key file {0!r} needs to be set to mode 0400 or 0600.\n'.format(
|
||||
key_filename
|
||||
)
|
||||
)
|
||||
|
||||
salt.utils.cloud.fire_event(
|
||||
'event',
|
||||
'starting create',
|
||||
|
@ -2331,15 +2358,6 @@ def create(vm_=None, call=None):
|
|||
vm_['name'], vm_['profile'], 'ec2', vm_['driver']
|
||||
)
|
||||
|
||||
key_filename = config.get_cloud_config_value(
|
||||
'private_key', vm_, __opts__, search_global=False, default=None
|
||||
)
|
||||
if key_filename is not None and not os.path.isfile(key_filename):
|
||||
raise SaltCloudConfigError(
|
||||
'The defined key_filename \'{0}\' does not exist'.format(
|
||||
key_filename
|
||||
)
|
||||
)
|
||||
vm_['key_filename'] = key_filename
|
||||
# wait_for_instance requires private_key
|
||||
vm_['private_key'] = key_filename
|
||||
|
@ -2376,6 +2394,12 @@ def create(vm_=None, call=None):
|
|||
else:
|
||||
# Put together all of the information required to request the instance,
|
||||
# and then fire off the request for it
|
||||
if keyname(vm_) is None:
|
||||
raise SaltCloudSystemExit(
|
||||
'The required \'keyname\' configuration setting is missing from the '
|
||||
'\'ec2\' driver.'
|
||||
)
|
||||
|
||||
data, vm_ = request_instance(vm_, location)
|
||||
|
||||
# If data is a str, it's an error
|
||||
|
@ -2469,8 +2493,7 @@ def create(vm_=None, call=None):
|
|||
log.debug('Salt interface set to: {0}'.format(salt_ip_address))
|
||||
vm_['salt_host'] = salt_ip_address
|
||||
|
||||
if config.get_cloud_config_value(
|
||||
'deploy', vm_, __opts__, default=True):
|
||||
if deploy:
|
||||
display_ssh_output = config.get_cloud_config_value(
|
||||
'display_ssh_output', vm_, __opts__, default=True
|
||||
)
|
||||
|
|
|
@ -4334,7 +4334,11 @@ def _list_nodes(full=False):
|
|||
|
||||
private_ips = []
|
||||
for nic in vm.find('TEMPLATE').findall('NIC'):
|
||||
private_ips.append(nic.find('IP').text)
|
||||
try:
|
||||
private_ips.append(nic.find('IP').text)
|
||||
except AttributeError:
|
||||
# There is no private IP; skip it
|
||||
pass
|
||||
|
||||
vms[name]['id'] = vm.find('ID').text
|
||||
vms[name]['image'] = vm.find('TEMPLATE').find('TEMPLATE_ID').text
|
||||
|
|
|
@ -39,6 +39,7 @@ import salt.utils.validate.path
|
|||
import salt.utils.xdg
|
||||
import salt.exceptions
|
||||
import salt.utils.sdb
|
||||
from salt.utils.locales import sdecode
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -54,10 +55,8 @@ if salt.utils.is_windows():
|
|||
# support in ZeroMQ, we want the default to be something that has a
|
||||
# chance of working.
|
||||
_DFLT_IPC_MODE = 'tcp'
|
||||
_DFLT_MULTIPROCESSING_MODE = False
|
||||
else:
|
||||
_DFLT_IPC_MODE = 'ipc'
|
||||
_DFLT_MULTIPROCESSING_MODE = True
|
||||
|
||||
FLO_DIR = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
|
@ -506,6 +505,15 @@ VALID_OPTS = {
|
|||
# Whether or not a copy of the master opts dict should be rendered into minion pillars
|
||||
'pillar_opts': bool,
|
||||
|
||||
# Cache the master pillar to disk to avoid having to pass through the rendering system
|
||||
'pillar_cache': bool,
|
||||
|
||||
# Pillar cache TTL, in seconds. Has no effect unless `pillar_cache` is True
|
||||
'pillar_cache_ttl': int,
|
||||
|
||||
# Pillar cache backend. Defaults to `disk` which stores caches in the master cache
|
||||
'pillar_cache_backend': str,
|
||||
|
||||
'pillar_safe_render_error': bool,
|
||||
|
||||
# When creating a pillar, there are several strategies to choose from when
|
||||
|
@ -736,7 +744,7 @@ VALID_OPTS = {
|
|||
# primarily as a mitigation technique against minion disconnects.
|
||||
'ping_interval': int,
|
||||
|
||||
# Instructs the salt CLI to print a summary of a minion reponses before returning
|
||||
# Instructs the salt CLI to print a summary of a minion responses before returning
|
||||
'cli_summary': bool,
|
||||
|
||||
# The maximum number of minion connections allowed by the master. Can have performance
|
||||
|
@ -811,6 +819,11 @@ DEFAULT_MINION_OPTS = {
|
|||
'autoload_dynamic_modules': True,
|
||||
'environment': None,
|
||||
'pillarenv': None,
|
||||
# `pillar_cache` and `pillar_ttl`
|
||||
# are not used on the minion but are unavoidably in the code path
|
||||
'pillar_cache': False,
|
||||
'pillar_cache_ttl': 3600,
|
||||
'pillar_cache_backend': 'disk',
|
||||
'extension_modules': os.path.join(salt.syspaths.CACHE_DIR, 'minion', 'extmods'),
|
||||
'state_top': 'top.sls',
|
||||
'state_top_saltenv': None,
|
||||
|
@ -882,7 +895,7 @@ DEFAULT_MINION_OPTS = {
|
|||
'open_mode': False,
|
||||
'auto_accept': True,
|
||||
'autosign_timeout': 120,
|
||||
'multiprocessing': _DFLT_MULTIPROCESSING_MODE,
|
||||
'multiprocessing': True,
|
||||
'mine_enabled': True,
|
||||
'mine_return_job': False,
|
||||
'mine_interval': 60,
|
||||
|
@ -1080,6 +1093,9 @@ DEFAULT_MASTER_OPTS = {
|
|||
'pillar_safe_render_error': True,
|
||||
'pillar_source_merging_strategy': 'smart',
|
||||
'pillar_merge_lists': False,
|
||||
'pillar_cache': False,
|
||||
'pillar_cache_ttl': 3600,
|
||||
'pillar_cache_backend': 'disk',
|
||||
'ping_on_rotate': False,
|
||||
'peer': {},
|
||||
'preserve_minion_cache': False,
|
||||
|
@ -1441,7 +1457,10 @@ def _read_conf_file(path):
|
|||
conf_opts = {}
|
||||
# allow using numeric ids: convert int to string
|
||||
if 'id' in conf_opts:
|
||||
conf_opts['id'] = str(conf_opts['id'])
|
||||
if not isinstance(conf_opts['id'], six.string_types):
|
||||
conf_opts['id'] = str(conf_opts['id'])
|
||||
else:
|
||||
conf_opts['id'] = sdecode(conf_opts['id'])
|
||||
for key, value in six.iteritems(conf_opts.copy()):
|
||||
if isinstance(value, text_type) and six.PY2:
|
||||
# We do not want unicode settings
|
||||
|
|
|
@ -59,6 +59,9 @@ def dropfile(cachedir, user=None):
|
|||
mask = os.umask(191)
|
||||
try:
|
||||
log.info('Rotating AES key')
|
||||
if os.path.isfile(dfn):
|
||||
log.info('AES key rotation already requested')
|
||||
return
|
||||
|
||||
if os.path.isfile(dfn) and not os.access(dfn, os.W_OK):
|
||||
os.chmod(dfn, stat.S_IRUSR | stat.S_IWUSR)
|
||||
|
|
|
@ -709,7 +709,9 @@ class RemoteFuncs(object):
|
|||
'''
|
||||
if any(key not in load for key in ('id', 'grains')):
|
||||
return False
|
||||
pillar = salt.pillar.Pillar(
|
||||
# pillar = salt.pillar.Pillar(
|
||||
log.debug('Master _pillar using ext: {0}'.format(load.get('ext')))
|
||||
pillar = salt.pillar.get_pillar(
|
||||
self.opts,
|
||||
load['grains'],
|
||||
load['id'],
|
||||
|
|
|
@ -970,7 +970,7 @@ def id_():
|
|||
'''
|
||||
return {'id': __opts__.get('id', '')}
|
||||
|
||||
_REPLACE_LINUX_RE = re.compile(r'linux', re.IGNORECASE)
|
||||
_REPLACE_LINUX_RE = re.compile(r'\Wlinux', re.IGNORECASE)
|
||||
|
||||
# This maps (at most) the first ten characters (no spaces, lowercased) of
|
||||
# 'osfullname' to the 'os' grain that Salt traditionally uses.
|
||||
|
|
|
@ -42,9 +42,10 @@ def _find_credentials():
|
|||
|
||||
for user in usernames:
|
||||
for pwd in __pillar__['proxy']['passwords']:
|
||||
r = __salt__['dracr.get_chassis_name'](host=__pillar__['proxy']['host'],
|
||||
admin_username=user,
|
||||
admin_password=pwd)
|
||||
r = salt.modules.dracr.get_chassis_name(
|
||||
host=__pillar__['proxy']['host'],
|
||||
admin_username=user,
|
||||
admin_password=pwd)
|
||||
# Retcode will be present if the chassis_name call failed
|
||||
try:
|
||||
if r.get('retcode', None) is None:
|
||||
|
|
|
@ -1202,8 +1202,9 @@ class LazyLoader(salt.utils.lazy.LazyDict):
|
|||
mod = None
|
||||
fpath, suffix = self.file_mapping[name]
|
||||
self.loaded_files.add(name)
|
||||
fpath_dirname = os.path.dirname(fpath)
|
||||
try:
|
||||
sys.path.append(os.path.dirname(fpath))
|
||||
sys.path.append(fpath_dirname)
|
||||
if suffix == '.pyx':
|
||||
mod = pyximport.load_module(name, fpath, tempfile.gettempdir())
|
||||
elif suffix == '.o':
|
||||
|
@ -1269,7 +1270,7 @@ class LazyLoader(salt.utils.lazy.LazyDict):
|
|||
)
|
||||
return False
|
||||
finally:
|
||||
sys.path.pop()
|
||||
sys.path.remove(fpath_dirname)
|
||||
|
||||
if hasattr(mod, '__opts__'):
|
||||
mod.__opts__.update(self.opts)
|
||||
|
|
|
@ -69,33 +69,32 @@ class FormatterWithHost(logging.Formatter, NewStyleClassMixIn):
|
|||
|
||||
def setup_handlers():
|
||||
handler_id = 'log4mongo_handler'
|
||||
if handler_id not in __opts__:
|
||||
yield False
|
||||
if handler_id in __opts__:
|
||||
config_fields = {
|
||||
'host': 'host',
|
||||
'port': 'port',
|
||||
'database_name': 'database_name',
|
||||
'collection': 'collection',
|
||||
'username': 'username',
|
||||
'password': 'password',
|
||||
'write_concern': 'w'
|
||||
}
|
||||
|
||||
config_fields = {
|
||||
'host': 'host',
|
||||
'port': 'port',
|
||||
'database_name': 'database_name',
|
||||
'collection': 'collection',
|
||||
'username': 'username',
|
||||
'password': 'password',
|
||||
'write_concern': 'w'
|
||||
}
|
||||
config_opts = {}
|
||||
for config_opt, arg_name in config_fields.iteritems():
|
||||
config_opts[arg_name] = __opts__[handler_id].get(config_opt)
|
||||
|
||||
config_opts = {}
|
||||
for config_opt, arg_name in config_fields.iteritems():
|
||||
config_opts[arg_name] = __opts__[handler_id].get(config_opt)
|
||||
config_opts['level'] = LOG_LEVELS[
|
||||
__opts__[handler_id].get(
|
||||
'log_level',
|
||||
__opts__.get('log_level', 'error')
|
||||
)
|
||||
]
|
||||
|
||||
config_opts['level'] = LOG_LEVELS[
|
||||
__opts__[handler_id].get(
|
||||
'log_level',
|
||||
__opts__.get('log_level', 'error')
|
||||
handler = MongoHandler(
|
||||
formatter=FormatterWithHost(),
|
||||
**config_opts
|
||||
)
|
||||
]
|
||||
|
||||
handler = MongoHandler(
|
||||
formatter=FormatterWithHost(),
|
||||
**config_opts
|
||||
)
|
||||
|
||||
yield handler
|
||||
yield handler
|
||||
else:
|
||||
yield False
|
||||
|
|
|
@ -445,6 +445,15 @@ class Master(SMaster):
|
|||
if not self.opts['fileserver_backend']:
|
||||
errors.append('No fileserver backends are configured')
|
||||
|
||||
# Check to see if we need to create a pillar cache dir
|
||||
if self.opts['pillar_cache'] and not os.path.isdir(os.path.join(self.opts['cachedir'], 'pillar_cache')):
|
||||
try:
|
||||
prev_umask = os.umask(0o077)
|
||||
os.mkdir(os.path.join(self.opts['cachedir'], 'pillar_cache'))
|
||||
os.umask(prev_umask)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
non_legacy_git_pillars = [
|
||||
x for x in self.opts.get('ext_pillar', [])
|
||||
if 'git' in x
|
||||
|
@ -1245,7 +1254,8 @@ class AESFuncs(object):
|
|||
load['grains']['id'] = load['id']
|
||||
|
||||
pillar_dirs = {}
|
||||
pillar = salt.pillar.Pillar(
|
||||
# pillar = salt.pillar.Pillar(
|
||||
pillar = salt.pillar.get_pillar(
|
||||
self.opts,
|
||||
load['grains'],
|
||||
load['id'],
|
||||
|
|
|
@ -92,7 +92,7 @@ def check_exists(name, path):
|
|||
|
||||
salt '*' alternatives.check_exists name path
|
||||
'''
|
||||
cmd = [_get_cmd(), '--list', name]
|
||||
cmd = [_get_cmd(), '--display', name]
|
||||
out = __salt__['cmd.run_all'](cmd, python_shell=False)
|
||||
|
||||
if out['retcode'] > 0 and out['stderr'] != '':
|
||||
|
|
|
@ -863,7 +863,8 @@ def purge(name=None, pkgs=None, **kwargs):
|
|||
|
||||
def upgrade(refresh=True, dist_upgrade=False, **kwargs):
|
||||
'''
|
||||
Upgrades all packages via ``apt-get dist-upgrade``
|
||||
Upgrades all packages via ``apt-get upgrade`` or ``apt-get dist-upgrade``
|
||||
if ``dist_upgrade`` is ``True``.
|
||||
|
||||
Returns a dict containing the changes::
|
||||
|
||||
|
@ -1674,7 +1675,7 @@ def mod_repo(repo, saltenv='base', **kwargs):
|
|||
if ``True``, will attempt to de-dup and consolidate sources
|
||||
|
||||
.. note:: Due to the way keys are stored for APT, there is a known issue
|
||||
where the key wont be updated unless another change is made
|
||||
where the key won't be updated unless another change is made
|
||||
at the same time. Keys should be properly added on initial
|
||||
configuration.
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ def __virtual__():
|
|||
if not HAS_BOTO:
|
||||
return (False, 'The boto_asg module could not be loaded: boto libraries not found')
|
||||
|
||||
__utils__['boto.assign_funcs'](__name__, 'asg', module='ec2.autoscale')
|
||||
__utils__['boto.assign_funcs'](__name__, 'asg', module='ec2.autoscale', pack=__salt__)
|
||||
setattr(sys.modules[__name__], '_get_ec2_conn',
|
||||
__utils__['boto.get_connection_func']('ec2'))
|
||||
return True
|
||||
|
|
|
@ -64,7 +64,7 @@ def __virtual__():
|
|||
|
||||
def __init__(opts):
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'cfn', module='cloudformation')
|
||||
__utils__['boto.assign_funcs'](__name__, 'cfn', module='cloudformation', pack=__salt__)
|
||||
|
||||
|
||||
def exists(name, region=None, key=None, keyid=None, profile=None):
|
||||
|
|
|
@ -76,7 +76,8 @@ def __virtual__():
|
|||
if not HAS_BOTO:
|
||||
return (False, 'The boto_cloudwatch module cannot be loaded: boto libraries are unavailable.')
|
||||
__utils__['boto.assign_funcs'](__name__, 'cloudwatch',
|
||||
module='ec2.cloudwatch')
|
||||
module='ec2.cloudwatch',
|
||||
pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ def __virtual__():
|
|||
'''
|
||||
if not HAS_BOTO:
|
||||
return (False, 'The module boto_dynamodb could not be loaded: boto libraries not found')
|
||||
__utils__['boto.assign_funcs'](__name__, 'dynamodb2')
|
||||
__utils__['boto.assign_funcs'](__name__, 'dynamodb2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ Connection module for Amazon EC2
|
|||
.. versionadded:: 2015.8.0
|
||||
|
||||
:configuration: This module accepts explicit EC2 credentials but can also
|
||||
utilize IAM roles assigned to the instance trough Instance Profiles.
|
||||
utilize IAM roles assigned to the instance through Instance Profiles.
|
||||
Dynamic credentials are then automatically obtained from AWS API and no
|
||||
further configuration is necessary. More Information available at:
|
||||
|
||||
|
@ -29,15 +29,15 @@ Connection module for Amazon EC2
|
|||
|
||||
If a region is not specified, the default is us-east-1.
|
||||
|
||||
It's also possible to specify key, keyid and region via a profile, either
|
||||
It's also possible to specify key, keyid, and region via a profile, either
|
||||
as a passed in dict, or as a string to pull from pillars or minion config:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
myprofile:
|
||||
keyid: GKTADJGHEIQSXMKKRBJ08H
|
||||
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
|
||||
region: us-east-1
|
||||
keyid: GKTADJGHEIQSXMKKRBJ08H
|
||||
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
|
||||
region: us-east-1
|
||||
|
||||
:depends: boto
|
||||
|
||||
|
@ -84,7 +84,9 @@ def __virtual__():
|
|||
return (False, "The boto_ec2 module cannot be loaded: boto library not found")
|
||||
elif _LooseVersion(boto.__version__) < _LooseVersion(required_boto_version):
|
||||
return (False, "The boto_ec2 module cannot be loaded: boto library version incorrect ")
|
||||
return True
|
||||
else:
|
||||
__utils__['boto.assign_funcs'](__name__, 'ec2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
def __init__(opts):
|
||||
|
|
|
@ -74,7 +74,7 @@ def __virtual__():
|
|||
'''
|
||||
if not HAS_BOTO:
|
||||
return (False, 'The modle boto_elasticache could not be loaded: boto libraries not found')
|
||||
__utils__['boto.assign_funcs'](__name__, 'elasticache')
|
||||
__utils__['boto.assign_funcs'](__name__, 'elasticache', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ def __virtual__():
|
|||
'''
|
||||
if not HAS_BOTO:
|
||||
return (False, "The boto_elb module cannot be loaded: boto library not found")
|
||||
__utils__['boto.assign_funcs'](__name__, 'elb', module='ec2.elb')
|
||||
__utils__['boto.assign_funcs'](__name__, 'elb', module='ec2.elb', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -232,7 +232,7 @@ def create(name, availability_zones, listeners, subnets=None,
|
|||
return False
|
||||
except boto.exception.BotoServerError as error:
|
||||
log.debug(error)
|
||||
msg = 'Failed to create ELB {0}: {1}'.format(name, error)
|
||||
msg = 'Failed to create ELB {0}: {1}: {2}'.format(name, error.error_code, error.message)
|
||||
log.error(msg)
|
||||
return False
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ def __virtual__():
|
|||
def __init__(opts):
|
||||
salt.utils.compat.pack_dunder(__name__)
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'iam')
|
||||
__utils__['boto.assign_funcs'](__name__, 'iam', pack=__salt__)
|
||||
|
||||
|
||||
def instance_profile_exists(name, region=None, key=None, keyid=None,
|
||||
|
|
|
@ -80,7 +80,7 @@ def __virtual__():
|
|||
def __init__(opts):
|
||||
salt.utils.compat.pack_dunder(__name__)
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'kms')
|
||||
__utils__['boto.assign_funcs'](__name__, 'kms', pack=__salt__)
|
||||
|
||||
|
||||
def create_alias(alias_name, target_key_id, region=None, key=None, keyid=None,
|
||||
|
|
|
@ -70,7 +70,7 @@ def __virtual__():
|
|||
'''
|
||||
if not HAS_BOTO:
|
||||
return (False, 'The boto_rds module could not be loaded: boto libraries not found')
|
||||
__utils__['boto.assign_funcs'](__name__, 'rds', module='rds2')
|
||||
__utils__['boto.assign_funcs'](__name__, 'rds', module='rds2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ def __virtual__():
|
|||
def __init__(opts):
|
||||
salt.utils.compat.pack_dunder(__name__)
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'route53')
|
||||
__utils__['boto.assign_funcs'](__name__, 'route53', pack=__salt__)
|
||||
|
||||
|
||||
def _get_split_zone(zone, _conn, private_zone):
|
||||
|
|
|
@ -86,7 +86,7 @@ def __virtual__():
|
|||
elif _LooseVersion(boto.__version__) < _LooseVersion(required_boto_version):
|
||||
return (False, 'The boto_secgroup module could not be loaded: boto library v2.4.0 not found')
|
||||
else:
|
||||
__utils__['boto.assign_funcs'](__name__, 'ec2')
|
||||
__utils__['boto.assign_funcs'](__name__, 'ec2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ def __virtual__():
|
|||
'''
|
||||
if not HAS_BOTO:
|
||||
return (False, 'The boto_sns module could not be loaded: boto libraries not found')
|
||||
__utils__['boto.assign_funcs'](__name__, 'sns')
|
||||
__utils__['boto.assign_funcs'](__name__, 'sns', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ def __virtual__():
|
|||
'''
|
||||
if not HAS_BOTO:
|
||||
return (False, 'The boto_sqs module could not be loaded: boto libraries not found')
|
||||
__utils__['boto.assign_funcs'](__name__, 'sqs')
|
||||
__utils__['boto.assign_funcs'](__name__, 'sqs', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue