diff --git a/doc/man/salt.7 b/doc/man/salt.7 index c7dd9e110abd..e717b5437fff 100644 --- a/doc/man/salt.7 +++ b/doc/man/salt.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SALT" "7" "May 12, 2022" "3004.2" "Salt" +.TH "SALT" "7" "Jun 30, 2022" "3005" "Salt" .SH NAME salt \- Salt Documentation . @@ -218,5319 +218,432 @@ open and proprietary projects. Please submit your expansions back to the Salt project so that we can all benefit together as Salt grows. Please feel free to sprinkle Salt around your systems and let the deliciousness come forth. -.SS Salt Community -.sp -Join the Salt! -.sp -There are many ways to participate in and communicate with the Salt community. -.sp -Salt has an active IRC channel and a mailing list. -.SS Mailing List -.sp -Join the \fI\%salt\-users mailing list\fP\&. It is the best place to ask questions -about Salt and see whats going on with Salt development! The Salt mailing list -is hosted by Google Groups. It is open to new members. -.sp -Additionally, all users of Salt should be subscribed to the Announcements mailing -list which contains important updates about Salt, such as new releaes and -security\-related announcements. This list is low\-traffic. -.SS IRC -.sp -The \fB#salt\fP IRC channel is hosted on the popular \fI\%LiberaChat\fP network. You -can use the \fI\%LiberaChat webchat client\fP right from your browser. \fI\%Logs of the -IRC channel activity\fP are also available. -.sp -If you wish to discuss the development of Salt itself join us in \fB#salt\-devel\fP\&. -.SS Follow on Github -.sp -The Salt code is developed via Github. Follow Salt for constant updates on what -is happening in Salt development: -.sp -\fI\%https://github.com/saltstack/salt\fP -.sp -Long\-term planning and strategic decisions are handled via Salt Enhancement Proposals -and can be found on GitHub. -.SS Blogs -.sp -SaltStack Inc. keeps a \fI\%blog\fP with recent news and advancements: -.sp -\fI\%http://www.saltstack.com/blog/\fP -.SS Example Salt States -.sp -The official \fBsalt\-states\fP repository is: -\fI\%https://github.com/SS\-archive/salt\-states\fP -.sp -A few examples of salt states from the community: -.INDENT 0.0 -.IP \(bu 2 -\fI\%https://github.com/blast\-hardcheese/blast\-salt\-states\fP -.IP \(bu 2 -\fI\%https://github.com/kevingranade/kevingranade\-salt\-state\fP -.IP \(bu 2 -\fI\%https://github.com/uggedal/states\fP -.IP \(bu 2 -\fI\%https://github.com/mattmcclean/salt\-openstack/tree/master/salt\fP -.IP \(bu 2 -\fI\%https://github.com/rentalita/ubuntu\-setup/\fP -.IP \(bu 2 -\fI\%https://github.com/brutasse/states\fP -.IP \(bu 2 -\fI\%https://github.com/bclermont/states\fP -.IP \(bu 2 -\fI\%https://github.com/pcrews/salt\-data\fP -.UNINDENT -.SS Follow on Open Hub -.sp -\fI\%https://www.openhub.net/p/salt\fP -.SS Other community links -.INDENT 0.0 -.IP \(bu 2 -\fI\%Salt Project\fP -.IP \(bu 2 -\fI\%Subreddit\fP -.IP \(bu 2 -\fI\%YouTube\fP -.IP \(bu 2 -\fI\%Facebook\fP -.IP \(bu 2 -\fI\%Twitter\fP -.IP \(bu 2 -\fI\%Wikipedia page\fP -.IP \(bu 2 -\fI\%Stack Overflow\fP -.UNINDENT -.SS Hack the Source -.sp -If you want to get involved with the development of source code or the -documentation efforts, please review the contributing documentation! -.SH SALT SYSTEM ARCHITECTURE -.SS Overview -.sp -This page provides a high\-level overview of the Salt system architecture and its -different components. -.SS What is Salt? -.sp -Salt is a Python\-based open\-source remote execution framework used for: -.INDENT 0.0 -.IP \(bu 2 -Configuration management -.IP \(bu 2 -Automation -.IP \(bu 2 -Provisioning -.IP \(bu 2 -Orchestration -.UNINDENT -.SS The Salt system architecture -.sp -The following diagram shows the primary components of the basic Salt -architecture: -[image] -.sp -The following sections describe some of the core components of the Salt -architecture. -.SS Salt Masters and Salt Minions -.sp -Salt uses the master\-client model in which a master issues commands to a client -and the client executes the command. In the Salt ecosystem, the Salt Master is a -server that is running the \fBsalt\-master\fP service. It issues commands to one or -more Salt Minions, which are servers that are running the \fBsalt\-minion\fP -service and that are registered with that particular Salt Master. -.sp -Another way to describe Salt is as a publisher\-subscriber model. The master -publishes jobs that need to be executed and Salt Minions subscribe to those -jobs. When a specific job applies to that minion, it will execute the job. -.sp -When a minion finishes executing a job, it sends job return data back to the -master. Salt has two ports used by default for the minions to communicate with -their master(s). These ports work in concert to receive and deliver data to the -Message Bus. Salt’s message bus is ZeroMQ, which creates an asynchronous network -topology to provide the fastest communication possible. -.SS Targets and grains -.sp -The master indicates which minions should execute the job by defining a -\fItarget\fP\&. A target is the group of minions, across one or many masters, that a -job\(aqs Salt command applies to. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -A master can also be managed like a minion and can be a target if it is -running the \fBsalt\-minion\fP service. -.UNINDENT -.UNINDENT -.sp -The following is an example of one of the many kinds of commands that a master -might issue to a minion. This command indicates that all minions should install -the Vim application: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \-v \(aq*\(aq pkg.install vim -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -In this case the glob \fB\(aq*\(aq\fP is the target, which indicates that all minions -should execute this command. Many other targeting options are available, -including targeting a specific minion by its ID or targeting minions by their -shared traits or characteristics (called \fIgrains\fP in Salt). -.sp -Salt comes with an interface to derive information about the underlying system. -This is called the \fIgrains interface\fP, because it presents Salt with grains of -information. Grains are collected for the operating system, domain name, -IP address, kernel, OS type, memory, and many other system properties. You can -also create your own custom grain data. -.sp -Grain data is relatively static. However, grain data is refreshed when system -information changes (such as network settings) or when a new value is assigned -to a custom grain. -.SS Open event system (event bus) -.sp -The event system is used for inter\-process communication between the Salt Master -and Salt Minions. In the event system: -.INDENT 0.0 -.IP \(bu 2 -Events are seen by both the master and minions. -.IP \(bu 2 -Events can be monitored and evaluated by both. -.UNINDENT -.sp -The event bus lays the groundwork for orchestration and real\-time monitoring. -.sp -All minions see jobs and results by subscribing to events published on the event -system. Salt uses a pluggable event system with two layers: -.INDENT 0.0 -.IP \(bu 2 -\fBZeroMQ (0MQ)\fP \- The current default socket\-level library providing a -flexible transport layer. -.IP \(bu 2 -\fBTornado\fP \- Full TCP\-based transport layer event system. -.UNINDENT -.sp -One of the greatest strengths of Salt is the speed of execution. The event -system’s communication bus is more efficient than running a higher\-level web -service (http). The remote execution system is the component that all components -are built upon, allowing for decentralized remote execution to spread load -across resources. -.SS Salt states -.sp -In addition to remote execution, Salt provides another method for configuring -minions by declaring which \fIstate\fP a minion should be in, otherwise referred to -as \fISalt states\fP\&. Salt states make configuration management possible. You can -use Salt states to deploy and manage infrastructure with simple YAML files. -Using states, you can automate recursive and predictable tasks by queueing jobs -for Salt to implement without needing user input. You can also add more complex -conditional logic to state files with Jinja. -.sp -To illustrate the subtle differences between remote execution and configuration -management, take the command referenced in the previous section about -\fI\%Targets and grains\fP in which Salt installed the application Vim on all -minions: -.TS -center; -|l|l|l|. -_ -T{ -Methodology -T} T{ -Implementation -T} T{ -Result -T} -_ -T{ -Remote execution -T} T{ -.INDENT 0.0 -.IP \(bu 2 -Run \fBsalt \-v \(aq*\(aq pkg.install vim\fP from the terminal -.UNINDENT -T} T{ -.INDENT 0.0 -.IP \(bu 2 -Remotely installs Vim on the targeted minions -.UNINDENT -T} -_ -T{ -Configuration management -T} T{ -.INDENT 0.0 -.IP \(bu 2 -Write a YAML state file that checks whether Vim is installed -.IP \(bu 2 -This state file is then applied to the targeted minions -.UNINDENT -T} T{ -.INDENT 0.0 -.IP \(bu 2 -Ensures that Vim is always installed on the targeted minions -.IP \(bu 2 -Salt analyzes the state file and determines what actions need to be -taken to ensure the minion complies with the state declarations -.IP \(bu 2 -If Vim is not installed, it automates the processes to install Vim on -the targeted minions -.UNINDENT -T} -_ -.TE -.sp -The state file that verifies Vim is installed might look like the following -example: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# File:/srv/salt/vim_install.sls - -install_vim_now: - pkg.installed: - \- pkgs: - \- vim -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To apply this state to a minion, you would use the \fBstate.apply\fP module, such -as in the following example: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \(aq*\(aq state.apply vim_install -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This command applies the \fBvim_install\fP state to all minions. -.sp -\fIFormulas\fP are collections of states that work in harmony to configure a minion -or application. For example, one state might trigger another state. -.SS The Top file -.sp -It is not practical to manually run each state individually targeting specific -minions each time. Some environments have hundreds of state files targeting -thousands of minions. -.sp -Salt offers two features to help with this scaling problem: -.INDENT 0.0 -.IP \(bu 2 -\fBThe top.sls file\fP \- Maps Salt states to their applicable minions. -.IP \(bu 2 -\fBHighstate execution\fP \- Runs all Salt states outlined in \fBtop.sls\fP in a -single execution. -.UNINDENT -.sp -The top file maps which states should be applied to different minions in certain -environments. The following is an example of a simple top file: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# File: /srv/salt/top.sls - -base: - \(aq*\(aq: - \- all_server_setup - - \(aq01webserver\(aq: - \- web_server_setup -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -In this example, \fBbase\fP refers to the Salt environment, which is the default. -You can specify more than one environment as needed, such as prod, dev, QA, etc. -.sp -Groups of minions are specified under the environment, and states are listed for -each set of minions. This top file indicates that a state called -\fBall_server_setup\fP should be applied to all minions \fB\(aq*\(aq\fP and the state -called \fBweb_server_setup\fP should be applied to the \fB01webserver\fP minion. -.sp -To run the Salt command, you would use the state.highstate function: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \e* state.highstate -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This command applies the top file to the targeted minions. -.SS Salt pillar -.sp -Salt’s pillar feature takes data defined on the Salt Master and distributes it -to minions as needed. Pillar is primarily used to store secrets or other highly -sensitive data, such as account credentials, cryptographic keys, or passwords. -Pillar is also useful for storing non\-secret data that you don\(aqt want to place -directly in your state files, such as configuration data. -.sp -Salt pillar brings data into the cluster from the opposite direction as grains. -While grains are data generated from the minion, the pillar is data generated -from the master. -.sp -Pillars are organized similarly to states in a Pillar state tree, where -\fBtop.sls\fP acts to coordinate pillar data to environments and minions privy to -the data. Information transferred using pillar has a dictionary generated for -the targeted minion and encrypted with that minion’s key for secure data -transfer. Pillar data is encrypted on a per\-minion basis, which makes it useful -for storing sensitive data specific to a particular minion. -.SS Beacons and reactors -.sp -The beacon system is a monitoring tool that can listen for a variety of system -processes on Salt Minions. Beacons can trigger reactors which can then help -implement a change or troubleshoot an issue. For example, if a service’s -response times out, the reactor system can restart the service. -.sp -Beacons are used for a variety of purposes, including: -.INDENT 0.0 -.IP \(bu 2 -Automated reporting -.IP \(bu 2 -Error log delivery -.IP \(bu 2 -Microservice monitoring -.IP \(bu 2 -User shell activity -.IP \(bu 2 -Resource monitoring -.UNINDENT -.sp -When coupled with reactors, beacons can create automated pre\-written responses -to infrastructure and application issues. Reactors expand Salt with automated -responses using pre\-written remediation states. -.sp -Reactors can be applied in a variety of scenarios: -.INDENT 0.0 -.IP \(bu 2 -Infrastructure scaling -.IP \(bu 2 -Notifying administrators -.IP \(bu 2 -Restarting failed applications -.IP \(bu 2 -Automatic rollback -.UNINDENT -.sp -When both beacons and reactors are used together , you can create unique states -customized to your specific needs. -.SS Salt runners and orchestration -.sp -Salt runners are convenience applications executed with the \fBsalt\-run\fP -command. Salt runners work similarly to Salt execution modules. However, they -execute on the Salt Master instead of the Salt Minions. A Salt runner can be a -simple client call or a complex application. -.sp -Salt provides the ability to orchestrate system administrative tasks throughout -the enterprise. Orchestration makes it possible to coordinate the activities of -multiple machines from a central place. It has the added advantage of being able -to control the sequence of when certain configuration events occur. -Orchestration states execute on the master using the state runner module. -.SH INSTALLATION -.sp -This section contains instructions to install Salt. If you are setting up your -environment for the first time, you should install a Salt master on -a dedicated management server or VM, and then install a Salt minion on each -system that you want to manage using Salt. For now you don\(aqt need to worry -about your architecture, you can easily add -components and modify your configuration later without needing to reinstall -anything. -.sp -The general installation process is as follows: -.INDENT 0.0 -.IP 1. 3 -Install a Salt master using the instructions for your platform or by running -the Salt bootstrap script. If you use the bootstrap script, be sure to -include the \fB\-M\fP option to install the Salt master. -.IP 2. 3 -Make sure that your Salt minions can find the Salt master\&. -.IP 3. 3 -Install the Salt minion on each system that you want to manage. -.IP 4. 3 -Accept the Salt minion keys after the Salt minion -connects. -.UNINDENT -.sp -After this, you should be able to run a simple command and receive salt version returns from -all connected Salt minions. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \(aq*\(aq test.version -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Quick Install -.sp -On most distributions, you can set up a \fBSalt Minion\fP with the -Salt bootstrap\&. -.SS Platform\-specific Installation Instructions -.sp -These guides go into detail how to install Salt on a given platform. -.SS Arch Linux -.SS Installation -.sp -Salt (stable) is currently available via the Arch Linux Official repositories. -There are currently \-git packages available in the Arch User repositories (AUR) -as well. -.SS Stable Release -.sp -Install Salt stable releases from the Arch Linux Official repositories as follows: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pacman \-S salt -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Tracking develop -.sp -To install the bleeding edge version of Salt (\fBmay include bugs!\fP), -use the \-git package. Installing the \-git package as follows: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -wget https://aur.archlinux.org/packages/sa/salt\-git/salt\-git.tar.gz -tar xf salt\-git.tar.gz -cd salt\-git/ -makepkg \-is -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -yaourt -.sp -If a tool such as \fI\%Yaourt\fP is used, the dependencies will be -gathered and built automatically. -.sp -The command to install salt using the yaourt tool is: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -yaourt salt\-git -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.SS Post\-installation tasks -.sp -\fBsystemd\fP -.sp -Activate the Salt Master and/or Minion via \fBsystemctl\fP as follows: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-master.service -systemctl enable salt\-minion.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBStart the Master\fP -.sp -Once you\(aqve completed all of these steps you\(aqre ready to start your Salt -Master. You should be able to start your Salt Master now using the command -seen here: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl start salt\-master -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now go to the Configuring Salt page. -.SS Debian GNU/Linux / Raspbian -.sp -Debian GNU/Linux distribution and some derivatives such as Raspbian already -have included Salt packages to their repositories. However, current stable -Debian release contains old outdated Salt releases. It is -recommended to use SaltStack repository for Debian as described -\fI\%below\fP\&. -.sp -Installation from official Debian and Raspbian repositories is described -\fI\%here\fP\&. -.SS Installation from the Official SaltStack Repository -.sp -Packages for Debian 10 (Buster) and Debian 9 (Stretch) are available in the -Official SaltStack repository. -.sp -Instructions are at \fI\%https://repo.saltproject.io/#debian\fP\&. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Archived builds from unsupported branches: -.INDENT 0.0 -.IP \(bu 2 -\fI\%Archive 1\fP -.IP \(bu 2 -\fI\%Archive 2\fP -.UNINDENT -.sp -If looking to use archives, the same directions from the \fI\%Debian install -directions\fP can be used by replacing -the URL paths with the appropriate archive location. The -repository configuration endpoint also needs to be adjusted to point to the -archives. Here is an example \fBsed\fP command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Salt repo configurations are found in the /etc/apt/sources.list.d/salt.list directory -sed \-i \(aqs/repo.saltproject.io/archive.repo.saltproject.io/g\(aq /etc/apt/sources.list.d/salt.list -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -Regular security support for Debian 8 ended on June 30th 2018. As a result, -3000.3 and 2019.2.5 will be the last Salt releases for which Debian 8 -packages are created. Debian 8 also reached LTS EOL on June 30 2020. -.sp -Regular security support for Debian 7 ended on April 25th 2016. As a result, -2016.3.1 and 2015.8.10 will be the last Salt releases for which Debian -7 packages are created. Debian 7 also reached LTS EOL on May 31 2018. -.UNINDENT -.UNINDENT -.SS Installation from the Debian / Raspbian Official Repository -.sp -The Debian distributions contain mostly old Salt packages -built by the Debian Salt Team. You can install Salt -components directly from Debian but it is recommended to -use the instructions above for the packages from the official -Salt repository. -.sp -On Jessie there is an option to install Salt minion from Stretch with -\fIpython\-tornado\fP dependency from \fIjessie\-backports\fP repositories. -.sp -To install fresh release of Salt minion on Jessie: -.INDENT 0.0 -.IP 1. 3 -Add \fIjessie\-backports\fP and \fIstretch\fP repositories: -.sp -\fBDebian\fP: -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -echo \(aqdeb http://httpredir.debian.org/debian jessie\-backports main\(aq >> /etc/apt/sources.list -echo \(aqdeb http://httpredir.debian.org/debian stretch main\(aq >> /etc/apt/sources.list -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBRaspbian\fP: -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -echo \(aqdeb http://archive.raspbian.org/raspbian/ stretch main\(aq >> /etc/apt/sources.list -.ft P -.fi -.UNINDENT -.UNINDENT -.IP 2. 3 -Make Jessie a default release: -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -echo \(aqAPT::Default\-Release "jessie";\(aq > /etc/apt/apt.conf.d/10apt -.ft P -.fi -.UNINDENT -.UNINDENT -.IP 3. 3 -Install Salt dependencies: -.sp -\fBDebian\fP: -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -apt\-get update -apt\-get install python\-zmq python\-systemd/jessie\-backports python\-tornado/jessie\-backports salt\-common/stretch -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBRaspbian\fP: -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -apt\-get update -apt\-get install python\-zmq python\-tornado/stretch salt\-common/stretch -.ft P -.fi -.UNINDENT -.UNINDENT -.IP 4. 3 -Install Salt minion package from Latest Debian Release: -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -apt\-get install salt\-minion/stretch -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.SS Install Packages -.sp -Install the Salt master, minion or other packages from the repository with -the \fIapt\-get\fP command. These examples each install one of Salt components, but -more than one package name may be given at a time: -.INDENT 0.0 -.IP \(bu 2 -\fBapt\-get install salt\-api\fP -.IP \(bu 2 -\fBapt\-get install salt\-cloud\fP -.IP \(bu 2 -\fBapt\-get install salt\-master\fP -.IP \(bu 2 -\fBapt\-get install salt\-minion\fP -.IP \(bu 2 -\fBapt\-get install salt\-ssh\fP -.IP \(bu 2 -\fBapt\-get install salt\-syndic\fP -.UNINDENT -.SS Post\-installation tasks -.sp -Now, go to the Configuring Salt page. -.SS Arista EOS Salt minion installation guide -.sp -The Salt minion for Arista EOS is distributed as a SWIX extension and can be installed directly on the switch. The EOS network operating system is based on old Fedora distributions and the installation of the \fBsalt\-minion\fP requires backports. This SWIX extension contains the necessary backports, together with the Salt basecode. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -This SWIX extension has been tested on Arista DCS\-7280SE\-68\-R, running EOS 4.17.5M and vEOS 4.18.3F. -.UNINDENT -.UNINDENT -.SS Important Notes -.sp -This package is in beta, make sure to test it carefully before running it in production. -.sp -If confirmed working correctly, please report and add a note on this page with the platform model and EOS version. -.sp -If you want to uninstall this package, please refer to the \fI\%uninstalling\fP section. -.SS Installation from the Official SaltStack Repository -.sp -Download the swix package and save it to flash. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#copy https://salt\-eos.netops.life/salt\-eos\-latest.swix flash: -veos#copy https://salt\-eos.netops.life/startup.sh flash: -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Install the Extension -.sp -Copy the Salt package to extension -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#copy flash:salt\-eos\-latest.swix extension: -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Install the SWIX -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#extension salt\-eos\-latest.swix force -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Verify the installation -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#show extensions | include salt\-eos - salt\-eos\-2017\-07\-19.swix 1.0.11/1.fc25 A, F 27 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Change the Salt master IP address or FQDN, by edit the variable (SALT_MASTER) -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#bash vi /mnt/flash/startup.sh -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Make sure you enable the eAPI with unix\-socket -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos(config)#management api http\-commands - protocol unix\-socket - no shutdown -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Post\-installation tasks -.sp -Generate Keys and host record and start Salt minion -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#bash -#sudo /mnt/flash/startup.sh -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBsalt\-minion\fP should be running -.sp -Copy the installed extensions to boot\-extensions -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#copy installed\-extensions boot\-extensions -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Apply event\-handler to let EOS start salt\-minion during boot\-up -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos(config)#event\-handler boot\-up\-script - trigger on\-boot - action bash sudo /mnt/flash/startup.sh -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -For more specific installation details of the \fBsalt\-minion\fP, please refer to Configuring Salt\&. -.SS Uninstalling -.sp -If you decide to uninstall this package, the following steps are recommended for safety: -.INDENT 0.0 -.IP 1. 3 -Remove the extension from boot\-extensions -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#bash rm /mnt/flash/boot\-extensions -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.IP 2. 3 -Remove the extension from extensions folder -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos#bash rm /mnt/flash/.extensions/salt\-eos\-latest.swix -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.IP 2. 3 -Remove boot\-up script -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -veos(config)#no event\-handler boot\-up\-script -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Additional Information -.sp -This SWIX extension contains the following RPM packages: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -libsodium\-1.0.11\-1.fc25.i686.rpm -libstdc++\-6.2.1\-2.fc25.i686.rpm -openpgm\-5.2.122\-6.fc24.i686.rpm -python\-Jinja2\-2.8\-0.i686.rpm -python\-PyYAML\-3.12\-0.i686.rpm -python\-babel\-0.9.6\-5.fc18.noarch.rpm -python\-backports\-1.0\-3.fc18.i686.rpm -python\-backports\-ssl_match_hostname\-3.4.0.2\-1.fc18.noarch.rpm -python\-backports_abc\-0.5\-0.i686.rpm -python\-certifi\-2016.9.26\-0.i686.rpm -python\-chardet\-2.0.1\-5.fc18.noarch.rpm -python\-crypto\-1.4.1\-1.noarch.rpm -python\-crypto\-2.6.1\-1.fc18.i686.rpm -python\-futures\-3.1.1\-1.noarch.rpm -python\-jtextfsm\-0.3.1\-0.noarch.rpm -python\-kitchen\-1.1.1\-2.fc18.noarch.rpm -python\-markupsafe\-0.18\-1.fc18.i686.rpm -python\-msgpack\-python\-0.4.8\-0.i686.rpm -python\-napalm\-base\-0.24.3\-1.noarch.rpm -python\-napalm\-eos\-0.6.0\-1.noarch.rpm -python\-netaddr\-0.7.18\-0.noarch.rpm -python\-pyeapi\-0.7.0\-0.noarch.rpm -python\-salt\-2017.7.0_1414_g2fb986f\-1.noarch.rpm -python\-singledispatch\-3.4.0.3\-0.i686.rpm -python\-six\-1.10.0\-0.i686.rpm -python\-tornado\-4.4.2\-0.i686.rpm -python\-urllib3\-1.5\-7.fc18.noarch.rpm -python2\-zmq\-15.3.0\-2.fc25.i686.rpm -zeromq\-4.1.4\-5.fc25.i686.rpm -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Fedora -.sp -Beginning with version 0.9.4, Salt has been available in the primary Fedora -repositories and \fI\%EPEL\fP\&. It is installable using \fByum\fP or \fBdnf\fP, depending -on your version of Fedora. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Released versions of Salt starting with \fB2015.5.2\fP through \fB2016.3.2\fP -do not have Fedora packages available though \fI\%EPEL\fP\&. To install a version -of Salt within this release array, please use SaltStack\(aqs \fI\%Bootstrap Script\fP -and use the git method of installing Salt using the version\(aqs associated -release tag. -.sp -Release \fB2016.3.3\fP and onward will have packaged versions available via -\fI\%EPEL\fP\&. -.UNINDENT -.UNINDENT -.sp -\fBWARNING\fP: Fedora 19 comes with systemd 204. Systemd has known bugs fixed in -later revisions that prevent the salt\-master from starting reliably or opening -the network connections that it needs to. It\(aqs not likely that a salt\-master -will start or run reliably on any distribution that uses systemd version 204 or -earlier. Running salt\-minions should be OK. -.SS Installation -.sp -Salt can be installed using \fByum\fP and is available in the standard Fedora -repositories. -.SS Stable Release -.sp -Salt is packaged separately for the minion and the master. It is necessary only to -install the appropriate package for the role the machine will play. Typically, there -will be one master and multiple minions. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -yum install salt\-master -yum install salt\-minion -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Installing from \fBupdates\-testing\fP -.sp -When a new Salt release is packaged, it is first admitted into the -\fBupdates\-testing\fP repository, before being moved to the stable repo. -.sp -To install from \fBupdates\-testing\fP, use the \fBenablerepo\fP argument for yum: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -yum \-\-enablerepo=updates\-testing install salt\-master -yum \-\-enablerepo=updates\-testing install salt\-minion -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Installation Using pip -.sp -Since Salt is on \fI\%PyPI\fP, it can be installed using pip, though most users -prefer to install using a package manager. -.sp -Installing from pip has a few additional requirements: -.INDENT 0.0 -.IP \(bu 2 -Install the group \(aqDevelopment Tools\(aq, \fBdnf groupinstall \(aqDevelopment Tools\(aq\fP -.IP \(bu 2 -Install the \(aqzeromq\-devel\(aq package if it fails on linking against that -afterwards as well. -.UNINDENT -.sp -A pip install does not make the init scripts or the /etc/salt directory, and you -will need to provide your own systemd service unit. -.sp -Installation from pip: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pip install salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -If installing from pip (or from source using \fBsetup.py install\fP), be -advised that the \fByum\-utils\fP package is needed for Salt to manage -packages. Also, if the Python dependencies are not already installed, then -you will need additional libraries/tools installed to build some of them. -More information on this can be found here\&. -.UNINDENT -.UNINDENT -.SS Post\-installation tasks -.sp -\fBMaster\fP -.sp -To have the Master start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-master.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl start salt\-master.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBMinion\fP -.sp -To have the Minion start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-minion.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Minion: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl start salt\-minion.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now go to the Configuring Salt page. -.SS FreeBSD -.SS Installation -.sp -Salt is available in the FreeBSD ports tree at \fI\%sysutils/py\-salt\fP\&. -.SS FreeBSD binary repo -.sp -Install Salt on FreeBSD via the official package repository. Salt is packaged -with whichever Python version is currently the \fI\%default on FreeBSD\fP\&. -.sp -Python 3.8 is currently default, install from packages like this: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pkg install py38\-salt -.ft P -.fi -.UNINDENT -.UNINDENT -.SS FreeBSD ports -.sp -Installation from ports: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd /usr/ports/sysutils/py\-salt -make install -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Python 3.7 can be used by setting default Python version to 3.7: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -echo "DEFAULT_VERSIONS+= python=3.7" >> /etc/make.conf -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Post\-installation tasks -.sp -\fBrc.conf\fP -.sp -Activate the Salt Master in \fB/etc/rc.conf\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sysrc salt_master_enable="YES" -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBStart the Master\fP -.sp -Start the Salt Master as follows: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -service salt_master start -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBrc.conf\fP -.sp -Activate the Salt Minion in \fB/etc/rc.conf\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sysrc salt_minion_enable="YES" -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBStart the Minion\fP -.sp -Start the Salt Minion as follows: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -service salt_minion start -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now go to the Configuring Salt page. -.SS Gentoo -.sp -Salt can be easily installed on Gentoo via Portage: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -emerge app\-admin/salt -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Post\-installation tasks -.sp -Now go to the Configuring Salt page. -.SS Cisco Nexus Salt Minion Installation and Configuration Guide -.sp -This document describes the Salt Minion installation and configuration on Cisco Nexus switches. These instructions detail the process for managing the Nexus switches using a Proxy Minion or Native Minion on platforms that have GuestShell support. -.SS Table of Contents -.INDENT 0.0 -.IP \(bu 2 -\fI\%Cisco Nexus Salt Minion Installation and Configuration Guide\fP -.INDENT 2.0 -.IP \(bu 2 -\fI\%Pre\-Install Tasks\fP -.INDENT 2.0 -.IP \(bu 2 -\fI\%STEP 1: Verify Platform and Software Version Support\fP -.IP \(bu 2 -\fI\%STEP 2: Choose Salt Minion Type\fP -.IP \(bu 2 -\fI\%STEP 3: Network Connectivity\fP -.UNINDENT -.IP \(bu 2 -\fI\%Salt Proxy Minion Configuration\fP -.INDENT 2.0 -.IP \(bu 2 -\fI\%Proxy Minion Pillar Data\fP -.UNINDENT -.IP \(bu 2 -\fI\%GuestShell Salt Minion Installation\fP -.INDENT 2.0 -.IP \(bu 2 -\fI\%STEP 1a: Enable the Guestshell on low footprint N3ks\fP -.IP \(bu 2 -\fI\%STEP 1b: Enable the Guestshell\fP -.IP \(bu 2 -\fI\%STEP 2: Set Up Guestshell Network\fP -.IP \(bu 2 -\fI\%STEP 3: Install SaltStack Minion\fP -.IP \(bu 2 -\fI\%STEP 4: Configure SaltStack Minion\fP -.UNINDENT -.IP \(bu 2 -\fI\%GuestShell Salt Minion Persistence\fP -.IP \(bu 2 -\fI\%References\fP -.UNINDENT -.UNINDENT -.SS Pre\-Install Tasks -.SS STEP 1: Verify Platform and Software Version Support -.sp -The following platforms and software versions have been certified to work with this version of Salt. -.INDENT 0.0 -.INDENT 3.5 -.SS Platform / Software Minimum Requirements -.TS -center; -|l|l|l|l|l|. -_ -T{ -Supported Platforms -T} T{ -Minimum NX\-OS Version -T} T{ -SSH Proxy Minion -T} T{ -NX\-API Proxy Minion -T} T{ -GuestShell Minion -T} -_ -T{ -Cisco Nexus N3k -T} T{ -7.0(3)I2(5) and later -T} T{ -Supported -T} T{ -Supported -T} T{ -Supported -T} -_ -T{ -Cisco Nexus N9k -T} T{ -7.0(3)I2(5) and later -T} T{ -Supported -T} T{ -Supported -T} T{ -Supported -T} -_ -T{ -Cisco Nexus N6k -T} T{ -7.3(0)N1(1) and later -T} T{ -Supported -T} T{ -Not Supported -T} T{ -Not Supported -T} -_ -T{ -Cisco Nexus N7k -T} T{ -7.3(0)D1(1) and later -T} T{ -Supported -T} T{ -Supported -T} T{ -Not Supported -T} -_ -.TE -.SS Platform Models -.TS -center; -|l|l|. -_ -T{ -Platform -T} T{ -Description -T} -_ -T{ -N3k -T} T{ -Support includes N30xx, N31xx, N32xx and N35xx models -T} -_ -T{ -N6k -T} T{ -Support includes all N6xxx models -T} -_ -T{ -N7k -T} T{ -Support includes all N7xxx models -T} -_ -T{ -N9k -T} T{ -Support includes all N9xxx models -T} -_ -.TE -.UNINDENT -.UNINDENT -.SS STEP 2: Choose Salt Minion Type -.sp -Using the tables above, select the Salt Minion type. -.INDENT 0.0 -.TP -.B Choices: -.INDENT 7.0 -.IP \(bu 2 -\fBSSH\fP Proxy Minion (See \fI\%Salt Proxy Minion Configuration\fP Section) -.IP \(bu 2 -\fBNX\-API\fP Proxy Minion (See \fI\%Salt Proxy Minion Configuration\fP Section) -.IP \(bu 2 -.INDENT 2.0 -.TP -.B \fBGuestShell\fP Native Minion (See \fI\%GuestShell Salt Minion Installation\fP Section) -.INDENT 7.0 -.IP \(bu 2 -Some platforms support a native minion installed directly on the NX\-OS device inside the GuestShell -.IP \(bu 2 -The GuestShell is a secure Linux container environment running CentOS -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.SS STEP 3: Network Connectivity -.sp -Ensure that IP reachability exists between the NX\-OS Salt Minion device and the SaltStack Master. -.sp -\fBNote:\fP The management interface exists in a separate VRF context and requires additional configuration as shown. -.sp -Example: Nexus CLI Configuration for connectivity via management interface -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -config term - vrf context management - ip name\-server 10.0.0.202 - ip domain\-name mycompany.com - ip route 0.0.0.0/0 10.0.0.1 - - interface mgmt0 - vrf member management - ip address 10.0.0.99/24 - - ntp server 10.0.0.201 use\-vrf management -end -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Salt Proxy Minion Configuration -.sp -Here is a sample Proxy Minion directory structure -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -saltmaster:/srv/pillar$tree -\&. -├── n3k\-proxy.sls -├── n7k\-proxy.sls -└── top.sls -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This displays a top sls file and two proxy minion sls files for a Nexus 3k and Nexus 7k device. -.sp -Sample contents for the \fBtop.sls\fP file. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -saltmaster:/srv/pillar$cat top.sls -base: - n3k\-proxy: - \- n3k\-proxy - n7k\-proxy: - \- n7k\-proxy -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Proxy Minion Pillar Data -.sp -Here is a sample Proxy Minion pillar data file. -.sp -All of the data for both ssh and nxapi proxy minion types can be stored in the same pillar data file. To choose \fBssh\fP or \fBnxapi\fP, simply set the \fBconnection:\fP parameter accordingly. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -saltmaster:/srv/pillar$cat n7k\-proxy.sls -proxy: - proxytype: nxos - - # Specify ssh or nxapi connection type (default is ssh) - #connection: ssh - connection: nxapi - - # Parameters Common to both SSH and NX\-API - host: n7k.example.com - username: admin - password: password - - # SSH Parameters - prompt_name: n7k - ssh_args: \(aq\-o PubkeyAuthentication=no\(aq - key_accept: True - - # NX\-API Parameters - transport: https - port: 443 - verify: False - - # Option to prevent auto\-save after each configuration command. - # Setting this to True will improve performance when using - # nxos execution module functions to configure the device. - no_save_config: True -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.IP \(bu 2 -For the most current nxos proxy minion configuration options, See \fBsalt.proxy.nxos\fP -.IP \(bu 2 -For the most current list of nxos execution module functions, See \fBsalt.modules.nxos\fP -.UNINDENT -.SS GuestShell Salt Minion Installation -.sp -This section is only required when running the SaltStack Minion from the \fBguestshell\fP\&. -.SS STEP 1a: Enable the Guestshell on low footprint N3ks -.sp -\fBNOTE:\fP Skip down to \fBSTEP 1b\fP if the target system is not a low footprint N3k. -.sp -Nexus 3xxx switches with 4 GB RAM and 1.6 GB bootflash are advised to use compacted images to reduce the storage resources consumed by the image. As part of the compaction process, the \fBguestshell.ova\fP is removed from the system image. To make use of the guestshell on these systems, the guestshell.ova may be downloaded and used to install the guestshell. -.sp -Guestshell OVA Download \fI\%Link\fP -.sp -Starting in release \fB9.2(1)\fP and onward, the .ova file can be copied to the \fBvolatile:\fP directory which frees up more space on \fBbootflash:\fP\&. -.sp -Copy the \fBguestshell.ova\fP file to \fBvolatile:\fP if supported, otherwise copy it to \fBbootflash:\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -n3xxx# copy scp://admin@1.2.3.4/guestshell.ova volatile: vrf management -guestshell.ova 100% 55MB 10.9MB/s 00:05 -Copy complete, now saving to disk (please wait)... -Copy complete. -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Use the \fBguestshell enable\fP command to install and enable guestshell. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -n3xxx# guestshell enable package volatile:guestshell.ova -.ft P -.fi -.UNINDENT -.UNINDENT -.SS STEP 1b: Enable the Guestshell -.sp -The \fBguestshell\fP container environment is enabled by default on most platforms; however, the default disk and memory resources allotted to guestshell are typically too small to support SaltStack Minion requirements. The resource limits may be increased with the NX\-OS CLI \fBguestshell resize\fP commands as shown below. -.INDENT 0.0 -.INDENT 3.5 -.SS Resource Requirements -.TS -center; -|l|l|. -_ -T{ -Resource -T} T{ -Recommended -T} -_ -T{ -Disk -T} T{ -\fB1000 MB\fP -T} -_ -T{ -Memory -T} T{ -\fB350 MB\fP -T} -_ -.TE -.UNINDENT -.UNINDENT -.sp -\fBshow guestshell detail\fP displays the current resource limits: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -n3k# show guestshell detail -Virtual service guestshell+ detail - State : Activated -\&... - Resource reservation - Disk : 150 MB - Memory : 128 MB -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBguestshell resize rootfs\fP sets disk size limits while \fBguestshell resize memory\fP sets memory limits. The resize commands do not take effect until after the guestshell container is (re)started by \fBguestshell reboot\fP or \fBguestshell enable\fP\&. -.sp -\fBExample.\fP Allocate resources for guestshell by setting new limits to 1000MB disk and 350MB memory. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -n3k# guestshell resize rootfs 1000 -n3k# guestshell resize memory 350 - -n3k# guestshell reboot -Are you sure you want to reboot the guest shell? (y/n) [n] y -.ft P -.fi -.UNINDENT -.UNINDENT -.SS STEP 2: Set Up Guestshell Network -.sp -The \fBguestshell\fP is an independent CentOS container that does not inherit settings from NX\-OS. -.INDENT 0.0 -.IP \(bu 2 -Use \fBguestshell\fP to enter the guestshell environment, then become root. -.IP \(bu 2 -\fIOptional:\fP Use \fBchvrf\fP to specify a vrf namespace; e.g. \fBsudo chvrf management\fP -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -n3k# guestshell - -[guestshell@guestshell ~]$ sudo su \- # Optional: sudo chvrf management -[root@guestshell guestshell]# -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBOPTIONAL: Add DNS Configuration\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -[root@guestshell guestshell]# cat >> /etc/resolv.conf << EOF -nameserver 10.0.0.202 -domain mycompany.com -EOF -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBOPTIONAL: Define proxy server variables if needed to allow network access to SaltStack package repositories\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -export http_proxy=http://proxy.yourdomain.com: -export https_proxy=https://proxy.yourdomain.com: -.ft P -.fi -.UNINDENT -.UNINDENT -.SS STEP 3: Install SaltStack Minion -.sp -Install the \fBpython3\fP and \fBpython3\-pip\fP packages. -.INDENT 0.0 -.INDENT 3.5 -\fB[root@guestshell guestshell]# yum install python3 python3\-pip\fP -.UNINDENT -.UNINDENT -.sp -\fBOPTIONAL: Upgrade the pip installer\fP -.INDENT 0.0 -.INDENT 3.5 -\fB[root@guestshell guestshell]# pip3 install \-\-upgrade pip\fP -.UNINDENT -.UNINDENT -.sp -Install the \fBcertifi\fP python package. -.INDENT 0.0 -.INDENT 3.5 -\fB[root@guestshell guestshell]# pip3 install certifi\fP -.UNINDENT -.UNINDENT -.sp -The most current information on installing the SaltStack Minion in a CentOS 7 environment can be found \fI\%here\fP -.sp -Information from the install guide is provided here for convenience. -.sp -Run the following commands to install the SaltStack repository and key: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -[root@guestshell guestshell]# rpm \-\-import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK\-GPG\-KEY.pub -[root@guestshell guestshell]# curl \-fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | tee /etc/yum.repos.d/salt.repo -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Run the following command to force yum to revalidate the cache for each repository. -.INDENT 0.0 -.INDENT 3.5 -\fB[root@guestshell guestshell]# yum clean expire\-cache\fP -.UNINDENT -.UNINDENT -.sp -Install the Salt Minion. -.INDENT 0.0 -.INDENT 3.5 -\fB[root@guestshell guestshell]# yum install salt\-minion\fP -.UNINDENT -.UNINDENT -.SS STEP 4: Configure SaltStack Minion -.sp -Make the following changes to the \fB/etc/salt/minion\fP configuration file in the NX\-OS GuestShell. -.sp -Change the \fBmaster:\fP directive to point to the SaltStack Master. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\- #master: salt -+ master: saltmaster.example.com -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Change the \fBid:\fP directive to easily identify the minion running in the GuestShell. -.sp -Example: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\- #id: salt -+ id: n3k\-guestshell\-minion -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Start the Minion in the Guestshell and accept the key on the SaltStack Master. -.INDENT 0.0 -.INDENT 3.5 -\fB[root@guestshell ~]# systemctl start salt\-minion\fP -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -saltmaster: salt\-key \-L -Accepted Keys: -Denied Keys: -Unaccepted Keys: -n3k\-guestshell\-minion -Rejected Keys: -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -saltmaster: salt\-key \-A -The following keys are going to be accepted: -Unaccepted Keys: -n3k\-guestshell\-minion -Proceed? [n/Y] Y -Key for minion n3k\-guestshell\-minion accepted. -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Ping the SaltStack Minion running in the Guestshell. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -saltmaster: salt n3k\-guestshell\-minion nxos.ping -n3k\-guestshell\-minion: - True -.ft P -.fi -.UNINDENT -.UNINDENT -.SS GuestShell Salt Minion Persistence -.sp -This section documents SaltStack Minion persistence in the \fBguestshell\fP after system restarts and high availability switchovers. -.sp -The \fBguestshell\fP container does not automatically sync filesystem changes from the active processor to the standby processor. This means that SaltStack Minion installation files and related file changes will not be present on the standby until they are manually synced with the following NX\-OS exec command: -.sp -\fBguestshell sync\fP -.sp -The \fBguestshell\fP environment uses \fBsystemd\fP for service management. The SaltStack Minion provides a generic systemd script when installed, but a slight modification as shown below is needed for nodes that run Salt in the management (or other vrf) namespace: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\-\-\- /usr/lib/systemd/system/salt\-minion.service.old -+++ /usr/lib/systemd/system/salt\-minion.service -[Unit] -Description=The Salt Minion -Documentation=man:salt\-minion(1) file:///usr/share/doc/salt/html/contents.html -https://docs.saltproject.io/en/latest/contents.html -After=network.target salt\-master.service - -[Service] -KillMode=process -Type=notify -NotifyAccess=all -LimitNOFILE=8192 - -\- ExecStart=/usr/bin/salt\-minion -+ ExecStart=/bin/nsenter \-\-net=/var/run/netns/management \-\- /usr/bin/salt\-minion - -[Install] -WantedBy=multi\-user.target -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Change the \fBpidfile:\fP directive to point to the \fB/run\fP \fBtmpfs\fP location in the GuestShell. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\- #pidfile: /var/run/salt\-minion.pid -+ pidfile: /run/salt\-minion.pid -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Next, enable the SaltStack Minion systemd service (the \fBenable\fP command adds it to systemd for autostarting on the next boot) and optionally start it now: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-minion -systemctl start salt\-minion -.ft P -.fi -.UNINDENT -.UNINDENT -.SS References -.INDENT 0.0 -.INDENT 3.5 -.SS Nexus Document References -.TS -center; -|l|l|. -_ -T{ -References -T} T{ -Description -T} -_ -T{ -\fI\%GuestShell_N9k\fP -T} T{ -N9k Guestshell Programmability Guide -T} -_ -T{ -\fI\%GuestShell_N3k\fP -T} T{ -N3k Guestshell Programmability Guide -T} -_ -.TE -.UNINDENT -.UNINDENT -.SS OpenBSD -.sp -Salt was added to the OpenBSD ports tree on Aug 10th 2013. -It has been tested on OpenBSD 5.5 onwards. -.sp -Salt is dependent on the following additional ports. These will be installed as -dependencies of the \fBsysutils/salt\fP port: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -devel/py3\-progressbar -net/py3\-msgpack -net/py3\-zmq -security/py3\-Cryptodome -security/py3\-M2Crypto -sysutils/py3\-distro -textproc/py3\-MarkupSafe -textproc/py3\-yaml -www/py3\-jinja2 -www/py3\-requests -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Installation -.sp -To install Salt from the OpenBSD package repo, use the command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pkg_add salt -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Post\-installation tasks -.sp -\fBMaster\fP -.sp -To have the Master start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rcctl enable salt_master -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rcctl start salt_master -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBMinion\fP -.sp -To have the Minion start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rcctl enable salt_minion -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Minion: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rcctl start salt_minion -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now go to the Configuring Salt page. -.SS macOS -.SS Installation from the Official SaltStack Repository -.sp -\fBLatest stable build from the selected branch\fP: - -.sp -The output of \fBmd5 \fP should match the contents of the -corresponding md5 file. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -.INDENT 0.0 -.IP \(bu 2 -\fI\%Earlier builds from supported branches\fP -.IP \(bu 2 -\fI\%Archived builds from unsupported branches\fP -.UNINDENT -.UNINDENT -.UNINDENT -.SS Installation from Homebrew -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -brew install saltstack -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -It should be noted that Homebrew explicitly discourages the \fI\%use of sudo\fP: -.INDENT 0.0 -.INDENT 3.5 -Homebrew is designed to work without using sudo. You can decide to use it but we strongly recommend not to do so. If you have used sudo and run into a bug then it is likely to be the cause. Please don’t file a bug report unless you can reproduce it after reinstalling Homebrew from scratch without using sudo -.UNINDENT -.UNINDENT -.SS Installation from MacPorts -.sp -Macports isolates its dependencies from the OS, and installs salt in /opt/local by default, with config files under /opt/local/etc/salt. For best results, add /opt/local/bin to your PATH. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo port install salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Variants allow selection of python version used to run salt, defaulting to python27, but also supporting python34, python35, and python36. To install salt with Python 3.6, use the python36 variant, for example: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo port install salt @python36 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Startup items (for master, minion, and rest\-cherrypy API gateway, respectively) are installed by subport targets. These will register launchd LaunchDaemons as org.macports.salt\-minion, for example, to trigger automatic startup of the salt\-minion through launchd. LaunchDaemons for salt can be started and stopped without reboot using the macprots load and unload commands. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo port install salt\-master salt\-minion salt\-api -sudo port load salt\-master salt\-minion salt\-api -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Installation from Pip -.sp -When only using the macOS system\(aqs pip, install this way: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo pip install salt -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Salt\-Master Customizations -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Salt master on macOS is not tested or supported by SaltStack. See \fI\%SaltStack Platform Support\fP for more information. -.UNINDENT -.UNINDENT -.sp -To run salt\-master on macOS, sudo add this configuration option to the /etc/salt/master file: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -max_open_files: 8192 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -On versions previous to macOS 10.10 (Yosemite), increase the root user maxfiles limit: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo launchctl limit maxfiles 4096 8192 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -On macOS 10.10 (Yosemite) and higher, maxfiles should not be adjusted. The -default limits are sufficient in all but the most extreme scenarios. -Overriding these values with the setting below will cause system -instability! -.UNINDENT -.UNINDENT -.sp -Now the salt\-master should run without errors: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo salt\-master \-\-log\-level=all -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Post\-installation tasks -.sp -Now go to the Configuring Salt page. -.SS RHEL / CentOS / Scientific Linux / Amazon Linux / Oracle Linux -.sp -Salt should work properly with all mainstream derivatives of Red Hat Enterprise -Linux, including CentOS, Scientific Linux, Oracle Linux, and Amazon Linux. -Report any bugs or issues on the \fI\%issue tracker\fP\&. -.SS Installation from the Official Salt Project Repository -.sp -Packages for Redhat, CentOS, and Amazon Linux are available in -the Salt Project Repository. -.INDENT 0.0 -.IP \(bu 2 -\fI\%Red Hat / CentOS\fP -.IP \(bu 2 -\fI\%Amazon Linux\fP -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Archived builds from unsupported branches: -.sp -\fBRed Hat / CentOS\fP -.INDENT 0.0 -.IP \(bu 2 -\fI\%Archive 1\fP -.IP \(bu 2 -\fI\%Archive 2\fP -.UNINDENT -.sp -If looking to use archives, the same directions from the \fI\%RHEL/CentOS -install directions\fP can be used by -replacing the URL paths with the appropriate archive location. The -repository configuration endpoint also needs to be adjusted to point to the -archives. Here is an example \fBsed\fP command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Salt repo configurations are found in the /etc/yum.repos.d/ directory -sed \-i \(aqs/repo.saltproject.io/archive.repo.saltproject.io/g\(aq /etc/yum.repos.d/salt*.repo -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBAmazon Linux\fP -.INDENT 0.0 -.IP \(bu 2 -\fI\%Archive 1\fP -.IP \(bu 2 -\fI\%Archive 2\fP -.UNINDENT -.sp -If looking to use archives, the same directions from the \fI\%Amazon -install directions\fP can be used by -replacing the URL paths with the appropriate archive location. The -repository configuration endpoint also needs to be adjusted to point to the -archives. Here is an example \fBsed\fP command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Salt repo configurations are found in the /etc/yum.repos.d/ directory -sed \-i \(aqs/repo.saltproject.io/archive.repo.saltproject.io/g\(aq /etc/yum.repos.d/salt*.repo -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -As of 2015.8.0, EPEL repository is no longer required for installing on -RHEL systems. Salt Project repository provides all needed dependencies. -.UNINDENT -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -If installing on Red Hat Enterprise Linux 7 with disabled (not subscribed on) -\(aqRHEL Server Releases\(aq or \(aqRHEL Server Optional Channel\(aq repositories, -append CentOS 7 GPG key URL to Salt Project yum repository configuration to -install required base packages: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -[saltstack\-repo] -name=Salt repo for Red Hat Enterprise Linux $releasever -baseurl=https://repo.saltproject.io/py3/redhat/$releasever/$basearch/latest -enabled=1 -gpgcheck=1 -gpgkey=https://repo.saltproject.io/py3/redhat/$releasever/$basearch/latest/SALTSTACK\-GPG\-KEY.pub - https://repo.saltproject.io/py3/redhat/$releasever/$basearch/latest/base/RPM\-GPG\-KEY\-CentOS\-7 -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -\fBsystemd\fP and \fBsystemd\-python\fP are required by Salt, but are not -installed by the Red Hat 7 \fB@base\fP installation or by the Salt -installation. These dependencies might need to be installed before Salt. -.UNINDENT -.UNINDENT -.SS Installation Using pip -.sp -Since Salt is on \fI\%PyPI\fP, it can be installed using pip, though most users -prefer to install using RPM packages (which can be installed by following -the directions in the \fI\%Salt Repository\fP). -.sp -Installing from pip has a few additional requirements: -.INDENT 0.0 -.IP \(bu 2 -Install the group \(aqDevelopment Tools\(aq, \fByum groupinstall \(aqDevelopment Tools\(aq\fP -.IP \(bu 2 -Install the \(aqzeromq\-devel\(aq package if it fails on linking against that -afterwards as well. -.UNINDENT -.sp -A pip install does not make the init scripts or the /etc/salt directory, and you -will need to provide your own systemd service unit. -.sp -Installation from pip: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pip install salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -If installing from pip (or from source using \fBsetup.py install\fP), be -advised that the \fByum\-utils\fP package is needed for Salt to manage -packages. Also, if the Python dependencies are not already installed, then -you will need additional libraries/tools installed to build some of them. -More information on this can be found here\&. -.UNINDENT -.UNINDENT -.SS ZeroMQ 4 -.sp -We recommend using ZeroMQ 4 where available. Salt Project provides ZeroMQ 4.3.1 -and \fBpyzmq\fP 17.0.0 in the \fI\%Salt Repository\fP\&. -.sp -If this repository is added \fIbefore\fP Salt is installed, then installing either -\fBsalt\-master\fP or \fBsalt\-minion\fP will automatically pull in ZeroMQ 4.3.1, and -additional steps to upgrade ZeroMQ and pyzmq are unnecessary. -.SS Package Management -.sp -Salt\(aqs interface to \fByum\fP makes heavy use of the -\fBrepoquery\fP utility, from the \fI\%yum\-utils\fP package. If salt has -been installed using pip, or a host is being managed using salt\-ssh, then as of -version 2014.7.0 \fI\%yum\-utils\fP will be installed automatically to satisfy this -dependency. -.SS Post\-installation tasks -.SS Master -.sp -To have the Master start automatically at boot time: -.sp -\fBRHEL/CentOS 7 and 8\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-master.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Master: -.sp -\fBRHEL/CentOS 7 and 8\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl start salt\-master.service -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Minion -.sp -To have the Minion start automatically at boot time: -.sp -\fBRHEL/CentOS 7 and 8\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-minion.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Minion: -.sp -\fBRHEL/CentOS 7 and 8\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl start salt\-minion.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now go to the Configuring Salt page. -.SS Solaris -.sp -Salt is known to work on Solaris but community packages are unmaintained. -.sp -It is possible to install Salt on Solaris by using \fIsetuptools\fP\&. -.sp -For example, to install the develop version of salt: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -git clone https://github.com/saltstack/salt -cd salt -sudo python setup.py install \-\-force -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -SaltStack does offer commercial support for Solaris which includes packages. -Packages can be found on the -\fI\%Downloads page of the Enterprise Installation Guide\fP -and are downloadable with a \fISaltStack Enterprise\fP account. -.UNINDENT -.UNINDENT -.SS Ubuntu -.SS Installation from the Official SaltStack Repository -.sp -Packages for Ubuntu 20.04 (Focal), Ubuntu 18.04 (Bionic), and Ubuntu 16 -(Xenial) are available in the SaltStack repository. -.sp -Instructions are at \fI\%https://repo.saltproject.io/#ubuntu\fP\&. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Archived builds from unsupported branches: -.INDENT 0.0 -.IP \(bu 2 -\fI\%Archive 1\fP -.IP \(bu 2 -\fI\%Archive 2\fP -.UNINDENT -.sp -If looking to use archives, the same directions from the \fI\%Ubuntu install -directions\fP can be used by replacing -the URL paths with the appropriate archive location. The -repository configuration endpoint also needs to be adjusted to point to the -archives. Here is an example \fBsed\fP command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Salt repo configurations are found in the /etc/apt/sources.list.d/salt.list directory -sed \-i \(aqs/repo.saltproject.io/archive.repo.saltproject.io/g\(aq /etc/apt/sources.list.d/salt.list -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.SS Install Packages -.sp -Install the Salt master, minion or other packages from the repository with -the \fIapt\-get\fP command. These examples each install one of Salt components, but -more than one package name may be given at a time: -.INDENT 0.0 -.IP \(bu 2 -\fBapt\-get install salt\-api\fP -.IP \(bu 2 -\fBapt\-get install salt\-cloud\fP -.IP \(bu 2 -\fBapt\-get install salt\-master\fP -.IP \(bu 2 -\fBapt\-get install salt\-minion\fP -.IP \(bu 2 -\fBapt\-get install salt\-ssh\fP -.IP \(bu 2 -\fBapt\-get install salt\-syndic\fP -.UNINDENT -.SS Post\-installation tasks -.sp -Now go to the Configuring Salt page. -.SS Windows -.sp -Salt has full support for running the Salt minion on Windows. You must connect -Windows Salt minions to a Salt master on a supported operating system to -control your Salt Minions. -.sp -Many of the standard Salt modules have been ported to work on Windows and many -of the Salt States currently work on Windows as well. -.SS Installation from the Official SaltStack Repository -.sp -\fBLatest stable build from the selected branch\fP: - -.sp -The output of \fBmd5sum \fP should match the contents of the -corresponding md5 file. -.sp -There are installers available for Python 3. Starting with Salt 3001, only -Python 3 builds of the Windows Salt Minion will be built. Python 2 builds -exist for earlier Salt Minion versions. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -.INDENT 0.0 -.IP \(bu 2 -\fI\%Earlier builds from supported branches\fP -.UNINDENT -.sp -Archived builds from unsupported branches: -.INDENT 0.0 -.IP \(bu 2 -\fI\%Archive 1\fP -.IP \(bu 2 -\fI\%Archive 2\fP -.UNINDENT -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The installation executable installs dependencies that the Salt minion -requires. -.UNINDENT -.UNINDENT -.sp -The 64bit and 32bit installers have been tested on Windows 8.1, Windows Server -2012 R2, Windows 10, Windows Server 2016, and Windows Server 2019. 32bit -installers have only been tested on 64bit systems. Please file a bug report on -our GitHub repo if issues for other platforms are found. -.sp -The installer will detect previous installations of Salt and ask if you would -like to remove them. Clicking OK will remove the Salt binaries and related files -but leave any existing config, cache, and PKI information. -.SS Salt Minion Installation -.sp -If the system is missing the appropriate version of the Visual C++ -Redistributable (vcredist) the user will be prompted to install it. Click \fBOK\fP -to install the vcredist. Click \fBCancel\fP to abort the installation without -making modifications to the system. -.sp -If Salt is already installed on the system the user will be prompted to remove -the previous installation. Click \fBOK\fP to uninstall Salt without removing the -configuration, PKI information, or cached files. Click \fBCancel\fP to abort the -installation before making any modifications to the system. -.sp -After the Welcome and the License Agreement, the installer asks for two bits of -information to configure the minion; the master hostname and the minion name. -The installer will update the minion config with these options. -.sp -If the installer finds an existing minion config file, these fields will be -populated with values from the existing config, but they will be grayed out. -There will also be a checkbox to use the existing config. If you continue, the -existing config will be used. If the checkbox is unchecked, default values are -displayed and can be changed. If you continue, the existing config file in -\fBc:\esalt\econf\fP will be removed along with the \fBc:\esalt\econf\eminion.d\fP -directory. The values entered will be used with the default config. -.sp -The final page allows you to start the minion service and optionally change its -startup type. By default, the minion is set to \fBAutomatic\fP\&. You can change the -minion start type to \fBAutomatic (Delayed Start)\fP by checking the \(aqDelayed -Start\(aq checkbox. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Highstates that require a reboot may fail after reboot because salt -continues the highstate before Windows has finished the booting process. -This can be fixed by changing the startup type to \(aqAutomatic (Delayed -Start)\(aq. The drawback is that it may increase the time it takes for the -\(aqsalt\-minion\(aq service to actually start. -.UNINDENT -.UNINDENT -.sp -The \fBsalt\-minion\fP service will appear in the Windows Service Manager and can -be managed there or from the command line like any other Windows service. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sc start salt\-minion -net start salt\-minion -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Installation Prerequisites -.sp -Most Salt functionality should work just fine right out of the box. A few Salt -modules rely on PowerShell. The minimum version of PowerShell required for Salt -is version 3. If you intend to work with DSC then Powershell version 5 is the -minimum. -.SS Silent Installer Options -.sp -The installer can be run silently by providing the \fB/S\fP option at the command -line. The installer also accepts the following options for configuring the Salt -Minion silently: -.TS -center; -|l|l|. -_ -T{ -Option -T} T{ -Description -T} -_ -T{ -\fB/master=\fP -T} T{ -A string value to set the IP address or hostname of -the master. Default value is \(aqsalt\(aq. You can pass a -single master or a comma\-separated list of masters. -Setting the master will cause the installer to use -the default config or a custom config if defined. -T} -_ -T{ -\fB/minion\-name=\fP -T} T{ -A string value to set the minion name. Default value -is \(aqhostname\(aq. Setting the minion name causes the -installer to use the default config or a custom -config if defined. -T} -_ -T{ -\fB/start\-minion=\fP -T} T{ -Either a 1 or 0. \(aq1\(aq will start the salt\-minion -service, \(aq0\(aq will not. Default is to start the -service after installation. -T} -_ -T{ -\fB/start\-minion\-delayed\fP -T} T{ -Set the minion start type to -\fBAutomatic (Delayed Start)\fP\&. -T} -_ -T{ -\fB/default\-config\fP -T} T{ -Overwrite the existing config if present with the -default config for salt. Default is to use the -existing config if present. If \fB/master\fP and/or -\fB/minion\-name\fP is passed, those values will be used -to update the new default config. -T} -_ -T{ -\fB/custom\-config=\fP -T} T{ -A string value specifying the name of a custom config -file in the same path as the installer or the full -path to a custom config file. If \fB/master\fP and/or -\fB/minion\-name\fP is passed, those values will be used -to update the new custom config. -T} -_ -T{ -\fB/S\fP -T} T{ -Runs the installation silently. Uses the above -settings or the defaults. -T} -_ -T{ -\fB/?\fP -T} T{ -Displays command line help. -T} -_ -.TE -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -\fB/start\-service\fP has been deprecated but will continue to function as -expected for the time being. -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -\fB/default\-config\fP and \fB/custom\-config=\fP will backup an existing config -if found. A timestamp and a \fB\&.bak\fP extension will be added. That includes -the \fBminion\fP file and the \fBminion.d\fP directory. -.UNINDENT -.UNINDENT -.sp -Here are some examples of using the silent installer: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Install the Salt Minion -# Configure the minion and start the service - -Salt\-Minion\-3001\-Py3\-AMD64\-Setup.exe /S /master=yoursaltmaster /minion\-name=yourminionname -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Install the Salt Minion -# Configure the minion but don\(aqt start the minion service - -Salt\-Minion\-3001\-Py3\-AMD64\-Setup.exe /S /master=yoursaltmaster /minion\-name=yourminionname /start\-minion=0 -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# Install the Salt Minion -# Configure the minion using a custom config and configuring multimaster - -Salt\-Minion\-3001\-Py3\-AMD64\-Setup.exe /S /custom\-config=windows_minion /master=prod_master1,prod_master2 -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Running the Salt Minion on Windows as an Unprivileged User -.sp -Notes: -.INDENT 0.0 -.IP \(bu 2 -These instructions were tested with Windows Server 2008 R2 -.IP \(bu 2 -They are generalizable to any version of Windows that supports a salt\-minion -.UNINDENT -.SS Create the Unprivileged User that the Salt Minion will Run As -.INDENT 0.0 -.IP 1. 4 -Click \fBStart\fP > \fBControl Panel\fP > \fBUser Accounts\fP\&. -.IP 2. 4 -Click \fBAdd or remove user accounts\fP\&. -.IP 3. 4 -Click \fBCreate new account\fP\&. -.IP 4. 4 -Enter \fBsalt\-user\fP (or a name of your preference) in the \fBNew account name\fP field. -.IP 5. 4 -Select the \fBStandard user\fP radio button. -.IP 6. 4 -Click the \fBCreate Account\fP button. -.IP 7. 4 -Click on the newly created user account. -.IP 8. 4 -Click the \fBCreate a password\fP link. -.IP 9. 4 -In the \fBNew password\fP and \fBConfirm new password\fP fields, provide -a password (e.g "SuperSecretMinionPassword4Me!"). -.IP 10. 4 -In the \fBType a password hint\fP field, provide appropriate text (e.g. "My Salt Password"). -.IP 11. 4 -Click the \fBCreate password\fP button. -.IP 12. 4 -Close the \fBChange an Account\fP window. -.UNINDENT -.SS Add the New User to the Access Control List for the Salt Folder -.INDENT 0.0 -.IP 1. 3 -In a File Explorer window, browse to the path where Salt is installed (the default path is \fBC:\eSalt\fP). -.IP 2. 3 -Right\-click on the \fBSalt\fP folder and select \fBProperties\fP\&. -.IP 3. 3 -Click on the \fBSecurity\fP tab. -.IP 4. 3 -Click the \fBEdit\fP button. -.IP 5. 3 -Click the \fBAdd\fP button. -.IP 6. 3 -Type the name of your designated Salt user and click the \fBOK\fP button. -.IP 7. 3 -Check the box to \fBAllow\fP the \fBModify\fP permission. -.IP 8. 3 -Click the \fBOK\fP button. -.IP 9. 3 -Click the \fBOK\fP button to close the \fBSalt Properties\fP window. -.UNINDENT -.SS Update the Windows Service User for the \fBsalt\-minion\fP Service -.INDENT 0.0 -.IP 1. 4 -Click \fBStart\fP > \fBAdministrative Tools\fP > \fBServices\fP\&. -.IP 2. 4 -In the Services list, right\-click on \fBsalt\-minion\fP and select \fBProperties\fP\&. -.IP 3. 4 -Click the \fBLog On\fP tab. -.IP 4. 4 -Click the \fBThis account\fP radio button. -.IP 5. 4 -Provide the account credentials created in section A. -.IP 6. 4 -Click the \fBOK\fP button. -.IP 7. 4 -Click the \fBOK\fP button to the prompt confirming that the user \fBhas been -granted the Log On As A Service right\fP\&. -.IP 8. 4 -Click the \fBOK\fP button to the prompt confirming that \fBThe new logon name -will not take effect until you stop and restart the service\fP\&. -.IP 9. 4 -Right\-Click on \fBsalt\-minion\fP and select \fBStop\fP\&. -.IP 10. 4 -Right\-Click on \fBsalt\-minion\fP and select \fBStart\fP\&. -.UNINDENT -.SS Building and Developing on Windows -.sp -This document will explain how to set up a development environment for Salt on -Windows. The development environment allows you to work with the source code to -customize or fix bugs. It will also allow you to build your own installation. -.sp -There are several scripts to automate creating a Windows installer as well as -setting up an environment that facilitates developing and troubleshooting Salt -code. They are located in the \fBpkg\ewindows\fP directory in the Salt repo -\fI\%(here)\fP\&. -.SS Scripts: -.TS -center; -|l|l|. -_ -T{ -Script -T} T{ -Description -T} -_ -T{ -\fBbuild_env_2.ps1\fP -T} T{ -A PowerShell script that sets up a Python 2 build -environment -T} -_ -T{ -\fBbuild_env_3.ps1\fP -T} T{ -A PowerShell script that sets up a Python 3 build -environment -T} -_ -T{ -\fBbuild_pkg.bat\fP -T} T{ -A batch file that builds a Windows installer based on the -contents of the \fBC:\ePython27\fP directory -T} -_ -T{ -\fBbuild.bat\fP -T} T{ -A batch file that fully automates the building of the -Windows installer using the above two scripts -T} -_ -.TE -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The \fBbuild.bat\fP and \fBbuild_pkg.bat\fP scripts both accept a parameter to -specify the version of Salt that will be displayed in the Windows installer. -If no version is passed, the version will be determined using git. -.sp -Both scripts also accept an additional parameter to specify the version of -Python to use. The default is 2. -.UNINDENT -.UNINDENT -.SS Prerequisite Software -.sp -The only prerequisite is \fI\%Git for Windows\fP\&. -.SS Create a Build Environment -.SS 1. Working Directory -.sp -Create a \fBSalt\-Dev\fP directory on the root of \fBC:\fP\&. This will be our working -directory. Navigate to \fBSalt\-Dev\fP and clone the -\fI\%Salt\fP repo from GitHub. -.sp -Open a command line and type: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd \e -md Salt\-Dev -cd Salt\-Dev -git clone https://github.com/saltstack/salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Go into the \fBsalt\fP directory and checkout the version of salt to work with -(2016.3 or higher). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd salt -git checkout 2017.7.2 -.ft P -.fi -.UNINDENT -.UNINDENT -.SS 2. Setup the Python Environment -.sp -Navigate to the \fBpkg\ewindows\fP directory and execute the \fBbuild_env.ps1\fP -PowerShell script. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd pkg\ewindows -powershell \-file build_env_2.ps1 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -You can also do this from Explorer by navigating to the \fBpkg\ewindows\fP -directory, right clicking the \fBbuild_env_2.ps1\fP powershell script and -selecting \fBRun with PowerShell\fP -.UNINDENT -.UNINDENT -.sp -This will download and install Python 2 with all the dependencies needed to -develop and build Salt. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -If you get an error or the script fails to run you may need to change the -execution policy. Open a powershell window and type the following command: -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -Set\-ExecutionPolicy RemoteSigned -.ft P -.fi -.UNINDENT -.UNINDENT -.SS 3. Salt in Editable Mode -.sp -Editable mode allows you to more easily modify and test the source code. For -more information see the \fI\%Pip documentation\fP\&. -.sp -Navigate to the root of the \fBsalt\fP directory and install Salt in editable mode -with \fBpip\fP -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd \eSalt\-Dev\esalt -pip install \-e . -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The \fB\&.\fP is important -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -If \fBpip\fP is not recognized, you may need to restart your shell to get the -updated path -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -If \fBpip\fP is still not recognized make sure that the Python Scripts folder -is in the System \fB%PATH%\fP\&. (\fBC:\ePython2\eScripts\fP) -.UNINDENT -.UNINDENT -.SS 4. Setup Salt Configuration -.sp -Salt requires a minion configuration file and a few other directories. The -default config file is named \fBminion\fP located in \fBC:\esalt\econf\fP\&. The -easiest way to set this up is to copy the contents of the -\fBsalt\epkg\ewindows\ebuildenv\fP directory to \fBC:\esalt\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd \e -md salt -xcopy /s /e \eSalt\-Dev\esalt\epkg\ewindows\ebuildenv\e* \esalt\e -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now go into the \fBC:\esalt\econf\fP directory and edit the minion config file named -\fBminion\fP (no extension). You need to configure the master and id parameters in -this file. Edit the following lines: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -master: -id: -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Create a Windows Installer -.sp -To create a Windows installer, follow steps 1 and 2 from -\fI\%Create a Build Environment\fP above. Then proceed -to 3 below: -.SS 3. Install Salt -.sp -To create the installer for Window we install Salt using Python instead of pip. -Navigate to the root \fBsalt\fP directory and install Salt. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd \eSalt\-Dev\esalt -python setup.py install -.ft P -.fi -.UNINDENT -.UNINDENT -.SS 4. Create the Windows Installer -.sp -Navigate to the \fBpkg\ewindows\fP directory and run the \fBbuild_pkg.bat\fP -with the build version (2017.7.2) and the Python version as parameters. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd pkg\ewindows -build_pkg.bat 2017.7.2 2 - ^^^^^^^^ ^ - | | -# build version \-\- | -# python version \-\-\-\-\-\- -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -If no version is passed, the \fBbuild_pkg.bat\fP will guess the version number -using git. If the python version is not passed, the default is 2. -.UNINDENT -.UNINDENT -.SS Creating a Windows Installer: Alternate Method (Easier) -.sp -Clone the \fI\%Salt\fP repo from GitHub into the -directory of your choice. We\(aqre going to use \fBSalt\-Dev\fP\&. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd \e -md Salt\-Dev -cd Salt\-Dev -git clone https://github.com/saltstack/salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Go into the \fBsalt\fP directory and checkout the version of Salt you want to -build. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd salt -git checkout 2017.7.2 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Then navigate to \fBpkg\ewindows\fP and run the \fBbuild.bat\fP script with the -version you\(aqre building. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd pkg\ewindows -build.bat 2017.7.2 3 - ^^^^^^^^ ^ - | | -# build version | -# python version \-\- -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This will install everything needed to build a Windows installer for Salt using -Python 3. The binary will be in the \fBsalt\epkg\ewindows\einstaller\fP directory. -.SS Testing the Salt minion -.INDENT 0.0 -.IP 1. 3 -Create the directory \fBC:\esalt\fP (if it doesn\(aqt exist already) -.IP 2. 3 -.INDENT 3.0 -.TP -.B Copy the example \fBconf\fP and \fBvar\fP directories from -\fBpkg\ewindows\ebuildenv\fP into \fBC:\esalt\fP -.UNINDENT -.IP 3. 3 -Edit \fBC:\esalt\econf\eminion\fP -.INDENT 3.0 -.INDENT 3.5 -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -master: ipaddress or hostname of your salt\-master -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.IP 4. 3 -Start the salt\-minion -.INDENT 3.0 -.INDENT 3.5 -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd C:\ePython27\eScripts -python salt\-minion \-l debug -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.IP 5. 3 -On the salt\-master accept the new minion\(aqs key -.INDENT 3.0 -.INDENT 3.5 -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo salt\-key \-A -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This accepts all unaccepted keys. If you\(aqre concerned about security just -accept the key for this specific minion. -.UNINDENT -.UNINDENT -.IP 6. 3 -Test that your minion is responding -.INDENT 3.0 -.INDENT 3.5 -On the salt\-master run: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo salt \(aq*\(aq test.version -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.UNINDENT -.sp -You should get the following response: \fB{\(aqyour minion hostname\(aq: True}\fP -.SS Packages Management Under Windows 2003 -.sp -Windows Server 2003 and Windows XP have both reached End of Support. Though Salt -is not officially supported on operating systems that are EoL, some -functionality may continue to work. -.sp -On Windows Server 2003, you need to install optional component "WMI Windows -Installer Provider" to get a full list of installed packages. If you don\(aqt have -this, salt\-minion can\(aqt report some installed software. -.SS SUSE -.SS Installation from the Official SaltStack Repository -.sp -The SaltStack Repository has packages available for the following platforms: -.INDENT 0.0 -.IP \(bu 2 -SLES 11 SP4 -.IP \(bu 2 -SLES 12 / SLES 12 SP1 through SP4 -.IP \(bu 2 -SLES 15 -.IP \(bu 2 -openSUSE Leap 15.0, 15.1, 42.2, 42.3 -.IP \(bu 2 -openSUSE Tumbleweed -.UNINDENT -.sp -Instructions are at \fI\%https://repo.saltproject.io/#suse\fP\&. -.SS Installation from the SUSE Repository -.sp -Since openSUSE 13.2, Salt has been available in the primary repositories. -With the release of SUSE manager 3 a new repository setup has been created. -The new repo will by systemsmanagement:saltstack, which is the source -for newer stable packages. For backward compatibility a linkpackage will be -created to the old devel:language:python repo. -All development of suse packages will be done in systemsmanagement:saltstack:testing. -This will ensure that salt will be in mainline suse repo\(aqs, a stable release -repo and a testing repo for further enhancements. -.SS Installation -.sp -Salt can be installed using \fBzypper\fP and is available in the standard openSUSE/SLES -repositories. -.SS Stable Release -.sp -Salt is packaged separately for the minion and the master. It is necessary only to -install the appropriate package for the role the machine will play. Typically, there -will be one master and multiple minions. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -zypper install salt\-master -zypper install salt\-minion -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Post\-installation tasks openSUSE -.sp -\fBMaster\fP -.sp -To have the Master start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-master.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl start salt\-master.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBMinion\fP -.sp -To have the Minion start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl enable salt\-minion.service -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Minion: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -systemctl start salt\-minion.service -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Post\-installation tasks SLES -.sp -\fBMaster\fP -.sp -To have the Master start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -chkconfig salt\-master on -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rcsalt\-master start -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBMinion\fP -.sp -To have the Minion start automatically at boot time: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -chkconfig salt\-minion on -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To start the Minion: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rcsalt\-minion start -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Unstable Release -.SS openSUSE -.sp -For openSUSE Leap or Tumbleweed systems, run the following as root: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -zypper install salt salt\-minion salt\-master -.ft P -.fi -.UNINDENT -.UNINDENT -.SS SUSE Linux Enterprise -.sp -For SLES 15 and above run the following as root: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -zypper install salt salt\-minion salt\-master -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now go to the Configuring Salt page. -.SS Initial Configuration -.SS Configuring Salt -.sp -Salt configuration is very simple. The default configuration for the -master will work for most installations and the only requirement for -setting up a minion is to set the location of the master in the minion -configuration file. -.sp -The configuration files will be installed to \fB/etc/salt\fP and are named -after the respective components, \fB/etc/salt/master\fP, and -\fB/etc/salt/minion\fP\&. -.SS Master Configuration -.sp -By default the Salt master listens on ports 4505 and 4506 on all -interfaces (0.0.0.0). To bind Salt to a specific IP, redefine the -"interface" directive in the master configuration file, typically -\fB/etc/salt/master\fP, as follows: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\- #interface: 0.0.0.0 -+ interface: 10.0.0.1 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -After updating the configuration file, restart the Salt master. -See the master configuration reference -for more details about other configurable options. -.SS Minion Configuration -.sp -Although there are many Salt Minion configuration options, configuring -a Salt Minion is very simple. By default a Salt Minion will -try to connect to the DNS name "salt"; if the Minion is able to -resolve that name correctly, no configuration is needed. -.sp -If the DNS name "salt" does not resolve to point to the correct -location of the Master, redefine the "master" directive in the minion -configuration file, typically \fB/etc/salt/minion\fP, as follows: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\- #master: salt -+ master: 10.0.0.1 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -After updating the configuration file, restart the Salt minion. -See the minion configuration reference -for more details about other configurable options. -.SS Proxy Minion Configuration -.sp -A proxy minion emulates the behaviour of a regular minion -and inherits their options. -.sp -Similarly, the configuration file is \fB/etc/salt/proxy\fP and the proxy -tries to connect to the DNS name "salt". -.sp -In addition to the regular minion options, -there are several proxy\-specific \- see the -proxy minion configuration reference\&. -.SS Running Salt -.INDENT 0.0 -.IP 1. 3 -Start the master in the foreground (to daemonize the process, pass the -\fB\-d flag\fP): -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-master -.ft P -.fi -.UNINDENT -.UNINDENT -.IP 2. 3 -Start the minion in the foreground (to daemonize the process, pass the -\fB\-d flag\fP): -.INDENT 3.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-minion -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.IP "Having trouble?" -.sp -The simplest way to troubleshoot Salt is to run the master and minion in -the foreground with \fBlog level\fP set to \fBdebug\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-master \-\-log\-level=debug -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -For information on salt\(aqs logging system please see the logging -document\&. -.UNINDENT -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.IP "Run as an unprivileged (non\-root) user" -.sp -To run Salt as another user, set the \fBuser\fP parameter in the -master config file. -.sp -Additionally, ownership, and permissions need to be set such that the -desired user can read from and write to the following directories (and -their subdirectories, where applicable): -.INDENT 0.0 -.IP \(bu 2 -/etc/salt -.IP \(bu 2 -/var/cache/salt -.IP \(bu 2 -/var/log/salt -.IP \(bu 2 -/var/run/salt -.UNINDENT -.sp -More information about running salt as a non\-privileged user can be found -here\&. -.UNINDENT -.UNINDENT -.sp -There is also a full troubleshooting guide -available. -.SS Key Identity -.sp -Salt provides commands to validate the identity of your Salt master -and Salt minions before the initial key exchange. Validating key identity helps -avoid inadvertently connecting to the wrong Salt master, and helps prevent -a potential MiTM attack when establishing the initial connection. -.SS Master Key Fingerprint -.sp -Print the master key fingerprint by running the following command on the Salt master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-key \-F master -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Copy the \fBmaster.pub\fP fingerprint from the \fILocal Keys\fP section, and then set this value -as the \fBmaster_finger\fP in the minion configuration file. Save the configuration -file and then restart the Salt minion. -.SS Minion Key Fingerprint -.sp -Run the following command on each Salt minion to view the minion key fingerprint: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-call \-\-local key.finger -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Compare this value to the value that is displayed when you run the -\fBsalt\-key \-\-finger \fP command on the Salt master. -.SS Key Management -.sp -Salt uses AES encryption for all communication between the Master and -the Minion. This ensures that the commands sent to the Minions cannot -be tampered with, and that communication between Master and Minion is -authenticated through trusted, accepted keys. -.sp -Before commands can be sent to a Minion, its key must be accepted on -the Master. Run the \fBsalt\-key\fP command to list the keys known to -the Salt Master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -[root@master ~]# salt\-key \-L -Unaccepted Keys: -alpha -bravo -charlie -delta -Accepted Keys: -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This example shows that the Salt Master is aware of four Minions, but none of -the keys has been accepted. To accept the keys and allow the Minions to be -controlled by the Master, again use the \fBsalt\-key\fP command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -[root@master ~]# salt\-key \-A -[root@master ~]# salt\-key \-L -Unaccepted Keys: -Accepted Keys: -alpha -bravo -charlie -delta -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBsalt\-key\fP command allows for signing keys individually or in bulk. The -example above, using \fB\-A\fP bulk\-accepts all pending keys. To accept keys -individually use the lowercase of the same option, \fB\-a keyname\fP\&. -.sp -\fBSEE ALSO:\fP -.INDENT 0.0 -.INDENT 3.5 -salt\-key manpage -.UNINDENT -.UNINDENT -.SS Sending Commands -.sp -Communication between the Master and a Minion may be verified by running -the \fBtest.version\fP command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -[root@master ~]# salt alpha test.version -alpha: - 2018.3.4 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Communication between the Master and all Minions may be tested in a -similar way: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -[root@master ~]# salt \(aq*\(aq test.version -alpha: - 2018.3.4 -bravo: - 2018.3.4 -charlie: - 2018.3.4 -delta: - 2018.3.4 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Each of the Minions should send a \fB2018.3.4\fP response as shown above, -or any other salt version installed. -.SS What\(aqs Next? -.sp -Understanding targeting is important. From there, depending -on the way you wish to use Salt, you should also proceed to learn about -Remote Execution and Configuration Management\&. -.SS Additional Installation Guides -.SS Salt Bootstrap -.sp -The Salt Bootstrap Script allows a user to install the Salt Minion or Master -on a variety of system distributions and versions. -.sp -The Salt Bootstrap Script is a shell script is known as \fBbootstrap\-salt.sh\fP\&. -It runs through a series of checks to determine the operating system type and -version. It then installs the Salt binaries using the appropriate methods. -.sp -The Salt Bootstrap Script installs the minimum number of packages required to -run Salt. This means that in the event you run the bootstrap to install via -package, Git will not be installed. Installing the minimum number of packages -helps ensure the script stays as lightweight as possible, assuming the user -will install any other required packages after the Salt binaries are present -on the system. +.SH SALT SYSTEM ARCHITECTURE +.SS Overview .sp -The Salt Bootstrap Script is maintained in a separate repo from Salt, complete -with its own issues, pull requests, contributing guidelines, release protocol, -etc. +This page provides a high\-level overview of the Salt system architecture and its +different components. +.SS What is Salt? .sp -To learn more, please see the Salt Bootstrap repo links: +Salt is a Python\-based open\-source remote execution framework used for: .INDENT 0.0 .IP \(bu 2 -\fI\%Salt Bootstrap repo\fP +Configuration management .IP \(bu 2 -\fI\%README\fP: includes supported operating systems, example usage, and more. +Automation .IP \(bu 2 -\fI\%Contributing Guidelines\fP +Provisioning .IP \(bu 2 -\fI\%Release Process\fP -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The Salt Bootstrap script can be found in the Salt repo under the -\fBsalt/cloud/deploy/bootstrap\-salt.sh\fP path. Any changes to this file -will be overwritten! Bug fixes and feature additions must be submitted -via the \fI\%Salt Bootstrap repo\fP\&. Please see the Salt Bootstrap Script\(aqs -\fI\%Release Process\fP for more information. -.UNINDENT -.UNINDENT -.SS Opening the Firewall up for Salt -.sp -The Salt master communicates with the minions using an AES\-encrypted ZeroMQ -connection. These communications are done over TCP ports \fB4505\fP and \fB4506\fP, -which need to be accessible on the master only. This document outlines suggested -firewall rules for allowing these incoming connections to the master. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -No firewall configuration needs to be done on Salt minions. These changes -refer to the master only. -.UNINDENT -.UNINDENT -.SS Fedora 18 and beyond / RHEL 7 / CentOS 7 -.sp -Starting with Fedora 18 \fI\%FirewallD\fP is the tool that is used to dynamically -manage the firewall rules on a host. It has support for IPv4/6 settings and -the separation of runtime and permanent configurations. To interact with -FirewallD use the command line client \fBfirewall\-cmd\fP\&. -.sp -\fBfirewall\-cmd example\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -firewall\-cmd \-\-permanent \-\-zone= \-\-add\-port=4505\-4506/tcp -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -A network zone defines the security level of trust for the network. -The user should choose an appropriate zone value for their setup. -Possible values include: drop, block, public, external, dmz, work, home, internal, trusted. -.sp -Don\(aqt forget to reload after you made your changes. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -firewall\-cmd \-\-reload -.ft P -.fi -.UNINDENT -.UNINDENT -.SS RHEL 6 / CentOS 6 -.sp -The \fBlokkit\fP command packaged with some Linux distributions makes opening -iptables firewall ports very simple via the command line. Just be careful -to not lock out access to the server by neglecting to open the ssh port. -.sp -\fBlokkit example\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -lokkit \-p 22:tcp \-p 4505:tcp \-p 4506:tcp -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The \fBsystem\-config\-firewall\-tui\fP command provides a text\-based interface to -modifying the firewall. -.sp -\fBsystem\-config\-firewall\-tui\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -system\-config\-firewall\-tui -.ft P -.fi -.UNINDENT -.UNINDENT -.SS openSUSE -.sp -Salt installs firewall rules in \fI\%/etc/sysconfig/SuSEfirewall2.d/services/salt\fP\&. -Enable with: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -SuSEfirewall2 open -SuSEfirewall2 start -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If you have an older package of Salt where the above configuration file is -not included, the \fBSuSEfirewall2\fP command makes opening iptables firewall -ports very simple via the command line. -.sp -\fBSuSEfirewall example\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -SuSEfirewall2 open EXT TCP 4505 -SuSEfirewall2 open EXT TCP 4506 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The firewall module in YaST2 provides a text\-based interface to modifying the -firewall. -.sp -\fBYaST2\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -yast2 firewall -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Windows -.sp -Windows Firewall is the default component of Microsoft Windows that provides -firewalling and packet filtering. There are many 3rd party firewalls available -for Windows, some of which use rules from the Windows Firewall. If you are -experiencing problems see the vendor\(aqs specific documentation for opening the -required ports. -.sp -The Windows Firewall can be configured using the Windows Interface or from the -command line. -.sp -\fBWindows Firewall (interface)\fP: -.INDENT 0.0 -.IP 1. 3 -Open the Windows Firewall Interface by typing \fBwf.msc\fP at the command -prompt or in a run dialog (\fIWindows Key + R\fP) -.IP 2. 3 -Navigate to \fBInbound Rules\fP in the console tree -.IP 3. 3 -Add a new rule by clicking \fBNew Rule...\fP in the Actions area -.IP 4. 3 -Change the Rule Type to \fBPort\fP\&. Click \fBNext\fP -.IP 5. 3 -Set the Protocol to \fBTCP\fP and specify local ports \fB4505\-4506\fP\&. Click -\fBNext\fP -.IP 6. 3 -Set the Action to \fBAllow the connection\fP\&. Click \fBNext\fP -.IP 7. 3 -Apply the rule to \fBDomain\fP, \fBPrivate\fP, and \fBPublic\fP\&. Click \fBNext\fP -.IP 8. 3 -Give the new rule a Name, ie: \fBSalt\fP\&. You may also add a description. Click -\fBFinish\fP -.UNINDENT -.sp -\fBWindows Firewall (command line)\fP: -.sp -The Windows Firewall rule can be created by issuing a single command. Run the -following command from the command line or a run prompt: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -netsh advfirewall firewall add rule name="Salt" dir=in action=allow protocol=TCP localport=4505\-4506 -.ft P -.fi -.UNINDENT -.UNINDENT -.SS iptables -.sp -Different Linux distributions store their \fIiptables\fP (also known as -\fI\%netfilter\fP) rules in different places, which makes it difficult to -standardize firewall documentation. Included are some of the more -common locations, but your mileage may vary. -.sp -\fBFedora / RHEL / CentOS\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/etc/sysconfig/iptables -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBArch Linux\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -/etc/iptables/iptables.rules -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBDebian\fP -.sp -Follow these instructions: \fI\%https://wiki.debian.org/iptables\fP -.sp -Once you\(aqve found your firewall rules, you\(aqll need to add the below line -to allow traffic on \fBtcp/4505\fP and \fBtcp/4506\fP: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\-A INPUT \-m state \-\-state new \-m tcp \-p tcp \-\-dport 4505:4506 \-j ACCEPT -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBUbuntu\fP -.sp -Salt installs firewall rules in \fI\%/etc/ufw/applications.d/salt.ufw\fP\&. Enable with: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -ufw allow salt -.ft P -.fi -.UNINDENT +Orchestration .UNINDENT -.SS pf.conf -.sp -The BSD\-family of operating systems uses \fI\%packet filter (pf)\fP\&. The following -example describes the addition to \fBpf.conf\fP needed to access the Salt -master. -.INDENT 0.0 -.INDENT 3.5 +.SS The Salt system architecture .sp -.nf -.ft C -pass in on $int_if proto tcp from any to $int_if port 4505:4506 -.ft P -.fi -.UNINDENT -.UNINDENT +The following diagram shows the primary components of the basic Salt +architecture: +[image] .sp -Once this addition has been made to the \fBpf.conf\fP the rules will need to -be reloaded. This can be done using the \fBpfctl\fP command. -.INDENT 0.0 -.INDENT 3.5 +The following sections describe some of the core components of the Salt +architecture. +.SS Salt Masters and Salt Minions .sp -.nf -.ft C -pfctl \-vf /etc/pf.conf -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Whitelist communication to Master +Salt uses the master\-client model in which a master issues commands to a client +and the client executes the command. In the Salt ecosystem, the Salt Master is a +server that is running the \fBsalt\-master\fP service. It issues commands to one or +more Salt Minions, which are servers that are running the \fBsalt\-minion\fP +service and that are registered with that particular Salt Master. .sp -There are situations where you want to selectively allow Minion traffic -from specific hosts or networks into your Salt Master. The first -scenario which comes to mind is to prevent unwanted traffic to your -Master out of security concerns, but another scenario is to handle -Minion upgrades when there are backwards incompatible changes between -the installed Salt versions in your environment. +Another way to describe Salt is as a publisher\-subscriber model. The master +publishes jobs that need to be executed and Salt Minions subscribe to those +jobs. When a specific job applies to that minion, it will execute the job. .sp -Here is an example \fI\%Linux iptables\fP ruleset to -be set on the Master: -.INDENT 0.0 -.INDENT 3.5 +When a minion finishes executing a job, it sends job return data back to the +master. Salt has two ports used by default for the minions to communicate with +their master(s). These ports work in concert to receive and deliver data to the +Message Bus. Salt’s message bus is ZeroMQ, which creates an asynchronous network +topology to provide the fastest communication possible. +.SS Targets and grains .sp -.nf -.ft C -# Allow Minions from these networks -\-I INPUT \-s 10.1.2.0/24 \-p tcp \-\-dports 4505:4506 \-j ACCEPT -\-I INPUT \-s 10.1.3.0/24 \-p tcp \-\-dports 4505:4506 \-j ACCEPT -# Allow Salt to communicate with Master on the loopback interface -\-A INPUT \-i lo \-p tcp \-\-dports 4505:4506 \-j ACCEPT -# Reject everything else -\-A INPUT \-p tcp \-\-dports 4505:4506 \-j REJECT -.ft P -.fi -.UNINDENT -.UNINDENT +The master indicates which minions should execute the job by defining a +\fItarget\fP\&. A target is the group of minions, across one or many masters, that a +job\(aqs Salt command applies to. .sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 -The important thing to note here is that the \fBsalt\fP command -needs to communicate with the listening network socket of -\fBsalt\-master\fP on the \fIloopback\fP interface. Without this you will -see no outgoing Salt traffic from the master, even for a simple -\fBsalt \(aq*\(aq test.version\fP, because the \fBsalt\fP client never reached -the \fBsalt\-master\fP to tell it to carry out the execution. -.UNINDENT -.UNINDENT -.SS Preseed Minion with Accepted Key -.sp -In some situations, it is not convenient to wait for a minion to start before -accepting its key on the master. For instance, you may want the minion to -bootstrap itself as soon as it comes online. You may also want to let your -developers provision new development machines on the fly. -.sp -\fBSEE ALSO:\fP -.INDENT 0.0 -.INDENT 3.5 -Many ways to preseed minion keys -.sp -Salt has other ways to generate and pre\-accept minion keys in addition to -the manual steps outlined below. -.sp -salt\-cloud performs these same steps automatically when new cloud VMs are -created (unless instructed not to). -.sp -salt\-api exposes an HTTP call to Salt\(aqs REST API to \fBgenerate and -download the new minion keys as a tarball\fP\&. -.UNINDENT -.UNINDENT -.sp -There is a general four step process to do this: -.INDENT 0.0 -.IP 1. 3 -Generate the keys on the master: -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -root@saltmaster# salt\-key \-\-gen\-keys=[key_name] -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Pick a name for the key, such as the minion\(aqs id. -.INDENT 0.0 -.IP 2. 3 -Add the public key to the accepted minion folder: -.UNINDENT -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -root@saltmaster# cp key_name.pub /etc/salt/pki/master/minions/[minion_id] -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -It is necessary that the public key file has the same name as your minion id. -This is how Salt matches minions with their keys. Also note that the pki folder -could be in a different location, depending on your OS or if specified in the -master config file. -.INDENT 0.0 -.IP 3. 3 -Distribute the minion keys. -.UNINDENT -.sp -There is no single method to get the keypair to your minion. The difficulty is -finding a distribution method which is secure. For Amazon EC2 only, an AWS best -practice is to use IAM Roles to pass credentials. (See blog post, -\fI\%https://aws.amazon.com/blogs/security/using\-iam\-roles\-to\-distribute\-non\-aws\-credentials\-to\-your\-ec2\-instances/\fP ) -.INDENT 0.0 -.INDENT 3.5 -.IP "Security Warning" -.sp -Since the minion key is already accepted on the master, distributing -the private key poses a potential security risk. A malicious party -will have access to your entire state tree and other sensitive data if they -gain access to a preseeded minion key. -.UNINDENT +A master can also be managed like a minion and can be a target if it is +running the \fBsalt\-minion\fP service. .UNINDENT -.INDENT 0.0 -.IP 4. 3 -Preseed the Minion with the keys .UNINDENT .sp -You will want to place the minion keys before starting the salt\-minion daemon: +The following is an example of one of the many kinds of commands that a master +might issue to a minion. This command indicates that all minions should install +the Vim application: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -/etc/salt/pki/minion/minion.pem -/etc/salt/pki/minion/minion.pub +salt \-v \(aq*\(aq pkg.install vim .ft P .fi .UNINDENT .UNINDENT .sp -Once in place, you should be able to start salt\-minion and run \fBsalt\-call -state.apply\fP or any other salt commands that require master authentication. -.SS The macOS (Maverick) Developer Step By Step Guide To Salt Installation +In this case the glob \fB\(aq*\(aq\fP is the target, which indicates that all minions +should execute this command. Many other targeting options are available, +including targeting a specific minion by its ID or targeting minions by their +shared traits or characteristics (called \fIgrains\fP in Salt). .sp -This document provides a step\-by\-step guide to installing a Salt cluster -consisting of one master, and one minion running on a local VM hosted on macOS. +Salt comes with an interface to derive information about the underlying system. +This is called the \fIgrains interface\fP, because it presents Salt with grains of +information. Grains are collected for the operating system, domain name, +IP address, kernel, OS type, memory, and many other system properties. You can +also create your own custom grain data. .sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -This guide is aimed at developers who wish to run Salt in a virtual machine. -The official (Linux) walkthrough can be found -\fI\%here\fP\&. -.UNINDENT -.UNINDENT -.SS The 5 Cent Salt Intro +Grain data is relatively static. However, grain data is refreshed when system +information changes (such as network settings) or when a new value is assigned +to a custom grain. +.SS Open event system (event bus) .sp -Since you\(aqre here you\(aqve probably already heard about Salt, so you already -know Salt lets you configure and run commands on hordes of servers easily. -Here\(aqs a brief overview of a Salt cluster: +The event system is used for inter\-process communication between the Salt Master +and Salt Minions. In the event system: .INDENT 0.0 .IP \(bu 2 -Salt works by having a "master" server sending commands to one or multiple -"minion" servers. The master server is the "command center". It is -going to be the place where you store your configuration files, aka: "which -server is the db, which is the web server, and what libraries and software -they should have installed". The minions receive orders from the master. -Minions are the servers actually performing work for your business. +Events are seen by both the master and minions. .IP \(bu 2 -Salt has two types of configuration files: -.sp -1. the "salt communication channels" or "meta" or "config" configuration -files (not official names): one for the master (usually is /etc/salt/master -, \fBon the master server\fP), and one for minions (default is -/etc/salt/minion or /etc/salt/minion.conf, \fBon the minion servers\fP). Those -files are used to determine things like the Salt Master IP, port, Salt -folder locations, etc.. If these are configured incorrectly, your minions -will probably be unable to receive orders from the master, or the master -will not know which software a given minion should install. -.sp -2. the "business" or "service" configuration files (once again, not an -official name): these are configuration files, ending with ".sls" extension, -that describe which software should run on which server, along with -particular configuration properties for the software that is being -installed. These files should be created in the /srv/salt folder by default, -but their location can be changed using ... /etc/salt/master configuration file! -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -This tutorial contains a third important configuration file, not to -be confused with the previous two: the virtual machine provisioning -configuration file. This in itself is not specifically tied to Salt, but -it also contains some Salt configuration. More on that in step 3. Also -note that all configuration files are YAML files. So indentation matters. -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Salt also works with "masterless" configuration where a minion is -autonomous (in which case salt can be seen as a local configuration tool), -or in "multiple master" configuration. See the documentation for more on -that. -.UNINDENT -.UNINDENT -.SS Before Digging In, The Architecture Of The Salt Cluster -.SS Salt Master -.sp -The "Salt master" server is going to be the Mac OS machine, directly. Commands -will be run from a terminal app, so Salt will need to be installed on the Mac. -This is going to be more convenient for toying around with configuration files. -.SS Salt Minion -.sp -We\(aqll only have one "Salt minion" server. It is going to be running on a -Virtual Machine running on the Mac, using VirtualBox. It will run an Ubuntu -distribution. -.SS Step 1 \- Configuring The Salt Master On Your Mac -.sp -\fI\%Official Documentation\fP -.sp -Because Salt has a lot of dependencies that are not built in macOS, we will use -Homebrew to install Salt. Homebrew is a package manager for Mac, it\(aqs great, use -it (for this tutorial at least!). Some people spend a lot of time installing -libs by hand to better understand dependencies, and then realize how useful a -package manager is once they\(aqre configuring a brand new machine and have to do -it all over again. It also lets you \fIuninstall\fP things easily. -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Brew is a Ruby program (Ruby is installed by default with your Mac). Brew -downloads, compiles, and links software. The linking phase is when compiled -software is deployed on your machine. It may conflict with manually -installed software, especially in the /usr/local directory. It\(aqs ok, -remove the manually installed version then refresh the link by typing -\fBbrew link \(aqpackageName\(aq\fP\&. Brew has a \fBbrew doctor\fP command that can -help you troubleshoot. It\(aqs a great command, use it often. Brew requires -xcode command line tools. When you run brew the first time it asks you to -install them if they\(aqre not already on your system. Brew installs -software in /usr/local/bin (system bins are in /usr/bin). In order to use -those bins you need your $PATH to search there first. Brew tells you if -your $PATH needs to be fixed. -.UNINDENT -.UNINDENT -.sp -\fBTIP:\fP -.INDENT 0.0 -.INDENT 3.5 -Use the keyboard shortcut \fBcmd + shift + period\fP in the "open" macOS -dialog box to display hidden files and folders, such as .profile. -.UNINDENT -.UNINDENT -.SS Install Homebrew -.sp -Install Homebrew here \fI\%https://brew.sh/\fP -.sp -Or just type -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -ruby \-e "$(curl \-fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now type the following commands in your terminal (you may want to type \fBbrew -doctor\fP after each to make sure everything\(aqs fine): -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -brew install python -brew install swig -brew install zmq -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -zmq is ZeroMQ. It\(aqs a fantastic library used for server to server network -communication and is at the core of Salt efficiency. -.UNINDENT -.UNINDENT -.SS Install Salt -.sp -You should now have everything ready to launch this command: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pip install salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -There should be no need for \fBsudo pip install salt\fP\&. Brew installed -Python for your user, so you should have all the access. In case you -would like to check, type \fBwhich python\fP to ensure that it\(aqs -/usr/local/bin/python, and \fBwhich pip\fP which should be -/usr/local/bin/pip. -.UNINDENT +Events can be monitored and evaluated by both. .UNINDENT .sp -Now type \fBpython\fP in a terminal then, \fBimport salt\fP\&. There should be no -errors. Now exit the Python terminal using \fBexit()\fP\&. -.SS Create The Master Configuration -.sp -If the default /etc/salt/master configuration file was not created, -copy\-paste it from here: -\fI\%https://docs.saltproject.io/ref/configuration/examples.html#configuration\-examples\-master\fP +The event bus lays the groundwork for orchestration and real\-time monitoring. .sp -\fBNOTE:\fP +All minions see jobs and results by subscribing to events published on the event +system. Salt uses a pluggable event system with two layers: .INDENT 0.0 -.INDENT 3.5 -\fB/etc/salt/master\fP is a file, not a folder. -.UNINDENT +.IP \(bu 2 +\fBZeroMQ (0MQ)\fP \- The current default socket\-level library providing a +flexible transport layer. +.IP \(bu 2 +\fBTornado\fP \- Full TCP\-based transport layer event system. .UNINDENT .sp -Salt Master configuration changes. The Salt master needs a few customization -to be able to run on macOS: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo launchctl limit maxfiles 4096 8192 -.ft P -.fi -.UNINDENT -.UNINDENT +One of the greatest strengths of Salt is the speed of execution. The event +system’s communication bus is more efficient than running a higher\-level web +service (http). The remote execution system is the component that all components +are built upon, allowing for decentralized remote execution to spread load +across resources. +.SS Salt states .sp -In the /etc/salt/master file, change max_open_files to 8192 (or just add the -line: \fBmax_open_files: 8192\fP (no quote) if it doesn\(aqt already exists). +In addition to remote execution, Salt provides another method for configuring +minions by declaring which \fIstate\fP a minion should be in, otherwise referred to +as \fISalt states\fP\&. Salt states make configuration management possible. You can +use Salt states to deploy and manage infrastructure with simple YAML files. +Using states, you can automate recursive and predictable tasks by queueing jobs +for Salt to implement without needing user input. You can also add more complex +conditional logic to state files with Jinja. .sp -You should now be able to launch the Salt master: +To illustrate the subtle differences between remote execution and configuration +management, take the command referenced in the previous section about +\fI\%Targets and grains\fP in which Salt installed the application Vim on all +minions: +.TS +center; +|l|l|l|. +_ +T{ +Methodology +T} T{ +Implementation +T} T{ +Result +T} +_ +T{ +Remote execution +T} T{ .INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo salt\-master \-\-log\-level=all -.ft P -.fi -.UNINDENT +.IP \(bu 2 +Run \fBsalt \-v \(aq*\(aq pkg.install vim\fP from the terminal .UNINDENT -.sp -There should be no errors when running the above command. -.sp -\fBNOTE:\fP +T} T{ .INDENT 0.0 -.INDENT 3.5 -This command is supposed to be a daemon, but for toying around, we\(aqll keep -it running on a terminal to monitor the activity. -.UNINDENT +.IP \(bu 2 +Remotely installs Vim on the targeted minions .UNINDENT -.sp -Now that the master is set, let\(aqs configure a minion on a VM. -.SS Step 2 \- Configuring The Minion VM -.sp -The Salt minion is going to run on a Virtual Machine. There are a lot of -software options that let you run virtual machines on a mac, But for this -tutorial we\(aqre going to use VirtualBox. In addition to virtualBox, we will use -Vagrant, which allows you to create the base VM configuration. -.sp -Vagrant lets you build ready to use VM images, starting from an OS image and -customizing it using "provisioners". In our case, we\(aqll use it to: +T} +_ +T{ +Configuration management +T} T{ .INDENT 0.0 .IP \(bu 2 -Download the base Ubuntu image +Write a YAML state file that checks whether Vim is installed .IP \(bu 2 -Install salt on that Ubuntu image (Salt is going to be the "provisioner" -for the VM). +This state file is then applied to the targeted minions +.UNINDENT +T} T{ +.INDENT 0.0 .IP \(bu 2 -Launch the VM +Ensures that Vim is always installed on the targeted minions .IP \(bu 2 -SSH into the VM to debug +Salt analyzes the state file and determines what actions need to be +taken to ensure the minion complies with the state declarations .IP \(bu 2 -Stop the VM once you\(aqre done. -.UNINDENT -.SS Install VirtualBox -.sp -Go get it here: \fI\%https://www.virtualbox.org/wiki/Downloads\fP (click on VirtualBox -for macOS hosts => x86/amd64) -.SS Install Vagrant -.sp -Go get it here: \fI\%https://www.vagrantup.com/downloads.html\fP and choose the latest version -(1.3.5 at time of writing), then the .dmg file. Double\-click to install it. -Make sure the \fBvagrant\fP command is found when run in the terminal. Type -\fBvagrant\fP\&. It should display a list of commands. -.SS Create The Minion VM Folder -.sp -Create a folder in which you will store your minion\(aqs VM. In this tutorial, -it\(aqs going to be a minion folder in the $home directory. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cd $home -mkdir minion -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Initialize Vagrant -.sp -From the minion folder, type -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -vagrant init -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This command creates a default Vagrantfile configuration file. This -configuration file will be used to pass configuration parameters to the Salt -provisioner in Step 3. -.SS Import Precise64 Ubuntu Box -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -vagrant box add precise64 http://files.vagrantup.com/precise64.box -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -This box is added at the global Vagrant level. You only need to do it -once as each VM will use this same file. -.UNINDENT -.UNINDENT -.SS Modify the Vagrantfile -.sp -Modify ./minion/Vagrantfile to use th precise64 box. Change the \fBconfig.vm.box\fP -line to: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -config.vm.box = "precise64" -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Uncomment the line creating a host\-only IP. This is the ip of your minion -(you can change it to something else if that IP is already in use): -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -config.vm.network :private_network, ip: "192.168.33.10" -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -At this point you should have a VM that can run, although there won\(aqt be much -in it. Let\(aqs check that. -.SS Checking The VM -.sp -From the $home/minion folder type: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -vagrant up -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -A log showing the VM booting should be present. Once it\(aqs done you\(aqll be back -to the terminal: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -ping 192.168.33.10 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -The VM should respond to your ping request. -.sp -Now log into the VM in ssh using Vagrant again: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -vagrant ssh -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -You should see the shell prompt change to something similar to -\fBvagrant@precise64:~$\fP meaning you\(aqre inside the VM. From there, enter the -following: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -ping 10.0.2.2 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -That ip is the ip of your VM host (the macOS host). The number is a -VirtualBox default and is displayed in the log after the Vagrant ssh -command. We\(aqll use that IP to tell the minion where the Salt master is. -Once you\(aqre done, end the ssh session by typing \fBexit\fP\&. -.UNINDENT -.UNINDENT -.sp -It\(aqs now time to connect the VM to the salt master -.SS Step 3 \- Connecting Master and Minion -.SS Creating The Minion Configuration File -.sp -Create the \fB/etc/salt/minion\fP file. In that file, put the -following lines, giving the ID for this minion, and the IP of the master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -master: 10.0.2.2 -id: \(aqminion1\(aq -file_client: remote -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Minions authenticate with the master using keys. Keys are generated -automatically if you don\(aqt provide one and can accept them later on. However, -this requires accepting the minion key every time the minion is destroyed or -created (which could be quite often). A better way is to create those keys in -advance, feed them to the minion, and authorize them once. -.SS Preseed minion keys -.sp -From the minion folder on your Mac run: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo salt\-key \-\-gen\-keys=minion1 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This should create two files: minion1.pem, and minion1.pub. -Since those files have been created using sudo, but will be used by vagrant, -you need to change ownership: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo chown youruser:yourgroup minion1.pem -sudo chown youruser:yourgroup minion1.pub -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Then copy the .pub file into the list of accepted minions: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo cp minion1.pub /etc/salt/pki/master/minions/minion1 -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Modify Vagrantfile to Use Salt Provisioner -.sp -Let\(aqs now modify the Vagrantfile used to provision the Salt VM. Add the -following section in the Vagrantfile (note: it should be at the same -indentation level as the other properties): -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -# salt\-vagrant config -config.vm.provision :salt do |salt| - salt.run_highstate = true - salt.minion_config = "/etc/salt/minion" - salt.minion_key = "./minion1.pem" - salt.minion_pub = "./minion1.pub" -end -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now destroy the vm and recreate it from the /minion folder: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -vagrant destroy -vagrant up -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -If everything is fine you should see the following message: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -"Bootstrapping Salt... (this may take a while) -Salt successfully configured and installed!" -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Checking Master\-Minion Communication -.sp -To make sure the master and minion are talking to each other, enter the -following: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo salt \(aq*\(aq test.version -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -You should see your minion answering with its salt version. It\(aqs now time to do some -configuration. -.SS Step 4 \- Configure Services to Install On the Minion -.sp -In this step we\(aqll use the Salt master to instruct our minion to install -Nginx. -.SS Checking the system\(aqs original state -.sp -First, make sure that an HTTP server is not installed on our minion. -When opening a browser directed at \fBhttp://192.168.33.10/\fP You should get an -error saying the site cannot be reached. -.SS Initialize the top.sls file -.sp -System configuration is done in \fB/srv/salt/top.sls\fP (and subfiles/folders), -and then applied by running the \fBstate.apply\fP function to have the Salt master order its minions -to update their instructions and run the associated commands. -.sp -First Create an empty file on your Salt master (macOS machine): -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -touch /srv/salt/top.sls -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -When the file is empty, or if no configuration is found for our minion -an error is reported: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -sudo salt \(aqminion1\(aq state.apply -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This should return an error stating: \fBNo Top file or external nodes data -matches found\fP\&. -.SS Create The Nginx Configuration -.sp -Now is finally the time to enter the real meat of our server\(aqs configuration. -For this tutorial our minion will be treated as a web server that needs to -have Nginx installed. -.sp -Insert the following lines into \fB/srv/salt/top.sls\fP (which should current be -empty). -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -base: - \(aqminion1\(aq: - \- bin.nginx -.ft P -.fi -.UNINDENT +If Vim is not installed, it automates the processes to install Vim on +the targeted minions .UNINDENT +T} +_ +.TE .sp -Now create \fB/srv/salt/bin/nginx.sls\fP containing the following: +The state file that verifies Vim is installed might look like the following +example: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -nginx: +# File:/srv/salt/vim_install.sls + +install_vim_now: pkg.installed: - \- name: nginx - service.running: - \- enable: True - \- reload: True + \- pkgs: + \- vim .ft P .fi .UNINDENT .UNINDENT -.SS Check Minion State .sp -Finally, run the \fBstate.apply\fP function -again: +To apply this state to a minion, you would use the \fBstate.apply\fP module, such +as in the following example: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -sudo salt \(aqminion1\(aq state.apply +salt \(aq*\(aq state.apply vim_install .ft P .fi .UNINDENT .UNINDENT .sp -You should see a log showing that the Nginx package has been installed -and the service configured. To prove it, open your browser and navigate to -\fI\%http://192.168.33.10/\fP, you should see the standard Nginx welcome page. -.sp -Congratulations! -.SS Where To Go From Here -.sp -A full description of configuration management within Salt (sls files among -other things) is available here: -\fI\%https://docs.saltproject.io/en/latest/index.html#configuration\-management\fP -.SS running salt as normal user tutorial -.sp -\fBBefore continuing\fP make sure you have a working Salt installation by -following the installation and the -configuration instructions. -.INDENT 0.0 -.INDENT 3.5 -.IP "Stuck?" -.sp -There are many ways to salt\-community including our -\fI\%mailing list\fP -and our \fI\%IRC channel\fP #salt. -.UNINDENT -.UNINDENT -.SS Running Salt functions as non root user -.sp -If you don\(aqt want to run salt cloud as root or even install it you can -configure it to have a virtual root in your working directory. -.sp -The salt system uses the \fBsalt.syspath\fP module to find the variables -.sp -If you run the salt\-build, it will generated in: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -\&./build/lib.linux\-x86_64\-2.7/salt/_syspaths.py -.ft P -.fi -.UNINDENT -.UNINDENT +This command applies the \fBvim_install\fP state to all minions. .sp -To generate it, run the command: -.INDENT 0.0 -.INDENT 3.5 +\fIFormulas\fP are collections of states that work in harmony to configure a minion +or application. For example, one state might trigger another state. +.SS The Top file .sp -.nf -.ft C -python setup.py build -.ft P -.fi -.UNINDENT -.UNINDENT +It is not practical to manually run each state individually targeting specific +minions each time. Some environments have hundreds of state files targeting +thousands of minions. .sp -Copy the generated module into your salt directory +Salt offers two features to help with this scaling problem: .INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -cp ./build/lib.linux\-x86_64\-2.7/salt/_syspaths.py salt/_syspaths.py -.ft P -.fi -.UNINDENT +.IP \(bu 2 +\fBThe top.sls file\fP \- Maps Salt states to their applicable minions. +.IP \(bu 2 +\fBHighstate execution\fP \- Runs all Salt states outlined in \fBtop.sls\fP in a +single execution. .UNINDENT .sp -Edit it to include needed variables and your new paths +The top file maps which states should be applied to different minions in certain +environments. The following is an example of a simple top file: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -# you need to edit this -_your_current_dir_ = ... -ROOT_DIR = _your_current_dir_ + "/salt/root" +# File: /srv/salt/top.sls -# you need to edit this -_location_of_source_code_ = ... -INSTALL_DIR = _location_of_source_code_ +base: + \(aq*\(aq: + \- all_server_setup -CONFIG_DIR = ROOT_DIR + "/etc/salt" -CACHE_DIR = ROOT_DIR + "/var/cache/salt" -SOCK_DIR = ROOT_DIR + "/var/run/salt" -SRV_ROOT_DIR = ROOT_DIR + "/srv" -BASE_FILE_ROOTS_DIR = ROOT_DIR + "/srv/salt" -BASE_PILLAR_ROOTS_DIR = ROOT_DIR + "/srv/pillar" -BASE_MASTER_ROOTS_DIR = ROOT_DIR + "/srv/salt\-master" -LOGS_DIR = ROOT_DIR + "/var/log/salt" -PIDFILE_DIR = ROOT_DIR + "/var/run" -CLOUD_DIR = INSTALL_DIR + "/cloud" -BOOTSTRAP = CLOUD_DIR + "/deploy/bootstrap\-salt.sh" + \(aq01webserver\(aq: + \- web_server_setup .ft P .fi .UNINDENT .UNINDENT .sp -Create the directory structure -.INDENT 0.0 -.INDENT 3.5 +In this example, \fBbase\fP refers to the Salt environment, which is the default. +You can specify more than one environment as needed, such as prod, dev, QA, etc. .sp -.nf -.ft C -mkdir \-p root/etc/salt root/var/cache/run root/run/salt root/srv -root/srv/salt root/srv/pillar root/srv/salt\-master root/var/log/salt root/var/run -.ft P -.fi -.UNINDENT -.UNINDENT +Groups of minions are specified under the environment, and states are listed for +each set of minions. This top file indicates that a state called +\fBall_server_setup\fP should be applied to all minions \fB\(aq*\(aq\fP and the state +called \fBweb_server_setup\fP should be applied to the \fB01webserver\fP minion. .sp -Populate the configuration files: +To run the Salt command, you would use the state.highstate function: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -cp \-r conf/* root/etc/salt/ +salt \e* state.highstate .ft P .fi .UNINDENT .UNINDENT .sp -Edit your \fBroot/etc/salt/master\fP configuration that is used by salt\-cloud: -.INDENT 0.0 -.INDENT 3.5 +This command applies the top file to the targeted minions. +.SS Salt pillar .sp -.nf -.ft C -user: *your user name* -.ft P -.fi -.UNINDENT -.UNINDENT +Salt’s pillar feature takes data defined on the Salt Master and distributes it +to minions as needed. Pillar is primarily used to store secrets or other highly +sensitive data, such as account credentials, cryptographic keys, or passwords. +Pillar is also useful for storing non\-secret data that you don\(aqt want to place +directly in your state files, such as configuration data. .sp -Run like this: -.INDENT 0.0 -.INDENT 3.5 +Salt pillar brings data into the cluster from the opposite direction as grains. +While grains are data generated from the minion, the pillar is data generated +from the master. .sp -.nf -.ft C -PYTHONPATH=\(gapwd\(ga scripts/salt\-cloud -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Standalone Minion +Pillars are organized similarly to states in a Pillar state tree, where +\fBtop.sls\fP acts to coordinate pillar data to environments and minions privy to +the data. Information transferred using pillar has a dictionary generated for +the targeted minion and encrypted with that minion’s key for secure data +transfer. Pillar data is encrypted on a per\-minion basis, which makes it useful +for storing sensitive data specific to a particular minion. +.SS Beacons and reactors .sp -Since the Salt minion contains such extensive functionality it can be useful -to run it standalone. A standalone minion can be used to do a number of -things: +The beacon system is a monitoring tool that can listen for a variety of system +processes on Salt Minions. Beacons can trigger reactors which can then help +implement a change or troubleshoot an issue. For example, if a service’s +response times out, the reactor system can restart the service. +.sp +Beacons are used for a variety of purposes, including: .INDENT 0.0 .IP \(bu 2 -Use salt\-call commands on a system without connectivity to a master +Automated reporting .IP \(bu 2 -Masterless States, run states entirely from files local to the minion -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -When running Salt in masterless mode, it is not required to run the -salt\-minion daemon. By default the salt\-minion daemon will attempt to -connect to a master and fail. The salt\-call command stands on its own -and does not need the salt\-minion daemon. -.sp -As of version 2016.11.0 you can have a running minion (with engines and -beacons) without a master connection. If you wish to run the salt\-minion -daemon you will need to set the \fBmaster_type\fP configuration -setting to be set to \(aqdisable\(aq. -.UNINDENT -.UNINDENT -.SS Minion Configuration -.sp -Throughout this document there are several references to setting different -options to configure a masterless Minion. Salt Minions are easy to configure -via a configuration file that is located, by default, in \fB/etc/salt/minion\fP\&. -Note, however, that on FreeBSD systems, the minion configuration file is located -in \fB/usr/local/etc/salt/minion\fP\&. -.sp -You can learn more about minion configuration options in the -Configuring the Salt Minion docs. -.SS Telling Salt Call to Run Masterless -.sp -The salt\-call command is used to run module functions locally on a minion -instead of executing them from the master. Normally the salt\-call command -checks into the master to retrieve file server and pillar data, but when -running standalone salt\-call needs to be instructed to not check the master for -this data. To instruct the minion to not look for a master when running -salt\-call the \fBfile_client\fP configuration option needs to be set. -By default the \fBfile_client\fP is set to \fBremote\fP so that the -minion knows that file server and pillar data are to be gathered from the -master. When setting the \fBfile_client\fP option to \fBlocal\fP the -minion is configured to not gather this data from the master. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -file_client: local -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now the salt\-call command will not look for a master and will assume that the -local system has all of the file and pillar resources. -.SS Running States Masterless -.sp -The state system can be easily run without a Salt master, with all needed files -local to the minion. To do this the minion configuration file needs to be set -up to know how to return file_roots information like the master. The file_roots -setting defaults to /srv/salt for the base environment just like on the master: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -file_roots: - base: - \- /srv/salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Now set up the Salt State Tree, top file, and SLS modules in the same way that -they would be set up on a master. Now, with the \fBfile_client\fP -option set to \fBlocal\fP and an available state tree then calls to functions in -the state module will use the information in the file_roots on the minion -instead of checking in with the master. -.sp -Remember that when creating a state tree on a minion there are no syntax or -path changes needed, SLS modules written to be used from a master do not need -to be modified in any way to work with a minion. -.sp -This makes it easy to "script" deployments with Salt states without having to -set up a master, and allows for these SLS modules to be easily moved into a -Salt master as the deployment grows. -.sp -The declared state can now be executed with: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-call state.apply -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -Or the salt\-call command can be executed with the \fB\-\-local\fP flag, this makes -it unnecessary to change the configuration file: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-call state.apply \-\-local -.ft P -.fi -.UNINDENT -.UNINDENT -.SS External Pillars -.sp -External pillars are supported when running in masterless mode. -.SS Salt Masterless Quickstart -.sp -Running a masterless salt\-minion lets you use Salt\(aqs configuration management -for a single machine without calling out to a Salt master on another machine. -.sp -Since the Salt minion contains such extensive functionality it can be useful -to run it standalone. A standalone minion can be used to do a number of -things: -.INDENT 0.0 +Error log delivery .IP \(bu 2 -Stand up a master server via States (Salting a Salt Master) +Microservice monitoring .IP \(bu 2 -Use salt\-call commands on a system without connectivity to a master +User shell activity .IP \(bu 2 -Masterless States, run states entirely from files local to the minion -.UNINDENT -.sp -It is also useful for testing out state trees before deploying to a production setup. -.SS Bootstrap Salt Minion -.sp -The \fI\%salt\-bootstrap\fP script makes bootstrapping a server with Salt simple -for any OS with a Bourne shell: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -curl \-L https://bootstrap.saltstack.com \-o bootstrap_salt.sh -sudo sh bootstrap_salt.sh -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -See the \fI\%salt\-bootstrap\fP documentation for other one liners. When using \fI\%Vagrant\fP -to test out salt, the \fI\%Vagrant salt provisioner\fP will provision the VM for you. -.SS Telling Salt to Run Masterless -.sp -To instruct the minion to not look for a master, the \fBfile_client\fP -configuration option needs to be set in the minion configuration file. -By default the \fBfile_client\fP is set to \fBremote\fP so that the -minion gathers file server and pillar data from the salt master. -When setting the \fBfile_client\fP option to \fBlocal\fP the -minion is configured to not gather this data from the master. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -file_client: local -.ft P -.fi -.UNINDENT +Resource monitoring .UNINDENT .sp -Now the salt minion will not look for a master and will assume that the local -system has all of the file and pillar resources. -.sp -Configuration which resided in the -master configuration (e.g. \fB/etc/salt/master\fP) -should be moved to the minion configuration -since the minion does not read the master configuration. +When coupled with reactors, beacons can create automated pre\-written responses +to infrastructure and application issues. Reactors expand Salt with automated +responses using pre\-written remediation states. .sp -\fBNOTE:\fP +Reactors can be applied in a variety of scenarios: .INDENT 0.0 -.INDENT 3.5 -When running Salt in masterless mode, do not run the salt\-minion daemon. -Otherwise, it will attempt to connect to a master and fail. The salt\-call -command stands on its own and does not need the salt\-minion daemon. -.UNINDENT +.IP \(bu 2 +Infrastructure scaling +.IP \(bu 2 +Notifying administrators +.IP \(bu 2 +Restarting failed applications +.IP \(bu 2 +Automatic rollback .UNINDENT -.SS Create State Tree -.sp -Following the successful installation of a salt\-minion, the next step is to create -a state tree, which is where the SLS files that comprise the possible states of the -minion are stored. .sp -The following example walks through the steps necessary to create a state tree that -ensures that the server has the Apache webserver installed. +When both beacons and reactors are used together , you can create unique states +customized to your specific needs. +.SS Salt runners and orchestration .sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -For a complete explanation on Salt States, see the \fI\%tutorial\fP\&. -.UNINDENT -.UNINDENT -.INDENT 0.0 -.IP 1. 3 -Create the \fBtop.sls\fP file: -.UNINDENT +Salt runners are convenience applications executed with the \fBsalt\-run\fP +command. Salt runners work similarly to Salt execution modules. However, they +execute on the Salt Master instead of the Salt Minions. A Salt runner can be a +simple client call or a complex application. .sp -\fB/srv/salt/top.sls:\fP -.INDENT 0.0 -.INDENT 3.5 +Salt provides the ability to orchestrate system administrative tasks throughout +the enterprise. Orchestration makes it possible to coordinate the activities of +multiple machines from a central place. It has the added advantage of being able +to control the sequence of when certain configuration events occur. +Orchestration states execute on the master using the state runner module. +.SH SALT COMMUNITY RESOURCES .sp -.nf -.ft C -base: - \(aq*\(aq: - \- webserver -.ft P -.fi -.UNINDENT -.UNINDENT -.INDENT 0.0 -.IP 2. 3 -Create the webserver state tree: -.UNINDENT +Join the Salt! .sp -\fB/srv/salt/webserver.sls:\fP -.INDENT 0.0 -.INDENT 3.5 +There are many ways to participate in and communicate with the Salt community. .sp -.nf -.ft C -apache: # ID declaration - pkg: # state declaration - \- installed # function declaration -.ft P -.fi -.UNINDENT -.UNINDENT +Salt has an active IRC channel and a mailing list. +.SS Mailing List .sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -The apache package has different names on different platforms, for -instance on Debian/Ubuntu it is apache2, on Fedora/RHEL it is httpd -and on Arch it is apache -.UNINDENT -.UNINDENT +Join the \fI\%salt\-users mailing list\fP\&. It is the best place to ask questions +about Salt and see whats going on with Salt development! The Salt mailing list +is hosted by Google Groups. It is open to new members. .sp -The only thing left is to provision our minion using \fBsalt\-call\fP\&. -.SS Salt\-call +Additionally, all users of Salt should be subscribed to the Announcements mailing +list which contains important updates about Salt, such as new releaes and +security\-related announcements. This list is low\-traffic. +.SS IRC .sp -The salt\-call command is used to run remote execution functions locally on a -minion instead of executing them from the master. Normally the salt\-call -command checks into the master to retrieve file server and pillar data, but -when running standalone salt\-call needs to be instructed to not check the -master for this data: -.INDENT 0.0 -.INDENT 3.5 +The \fB#salt\fP IRC channel is hosted on the popular \fI\%LiberaChat\fP network. You +can use the \fI\%LiberaChat webchat client\fP right from your browser. \fI\%Logs of the +IRC channel activity\fP are also available. .sp -.nf -.ft C -salt\-call \-\-local state.apply -.ft P -.fi -.UNINDENT -.UNINDENT +If you wish to discuss the development of Salt itself join us in \fB#salt\-devel\fP\&. +.SS Follow on Github .sp -The \fB\-\-local\fP flag tells the salt\-minion to look for the state tree in the -local file system and not to contact a Salt Master for instructions. +The Salt code is developed via Github. Follow Salt for constant updates on what +is happening in Salt development: .sp -To provide verbose output, use \fB\-l debug\fP: -.INDENT 0.0 -.INDENT 3.5 +\fI\%https://github.com/saltstack/salt\fP .sp -.nf -.ft C -salt\-call \-\-local state.apply \-l debug -.ft P -.fi -.UNINDENT -.UNINDENT +Long\-term planning and strategic decisions are handled via Salt Enhancement Proposals +and can be found on GitHub. +.SS Blogs .sp -The minion first examines the \fBtop.sls\fP file and determines that it is a part -of the group matched by \fB*\fP glob and that the \fBwebserver\fP SLS should be applied. +The Salt Project keeps a \fI\%blog\fP with recent news and advancements: .sp -It then examines the \fBwebserver.sls\fP file and finds the \fBapache\fP state, which -installs the Apache package. +\fI\%https://saltproject.io/blog/\fP +.SS Example Salt States .sp -The minion should now have Apache installed, and the next step is to begin -learning how to write more complex states\&. -.SS Dependencies +The official \fBsalt\-states\fP repository is: +\fI\%https://github.com/saltstack/salt\-states\fP .sp -Salt should run on any Unix\-like platform so long as the dependencies are met. +A few examples of salt states from the community: .INDENT 0.0 .IP \(bu 2 -\fI\%Python\fP \- Python2 >= 2.7, Python3 >= 3.4 +\fI\%https://github.com/blast\-hardcheese/blast\-salt\-states\fP .IP \(bu 2 -\fI\%msgpack\fP \- High\-performance message interchange format +\fI\%https://github.com/kevingranade/kevingranade\-salt\-state\fP .IP \(bu 2 -\fI\%YAML\fP \- Python YAML bindings +\fI\%https://github.com/uggedal/states\fP .IP \(bu 2 -\fI\%Jinja2\fP \- parsing Salt States (configurable in the master settings) +\fI\%https://github.com/mattmcclean/salt\-openstack/tree/master/salt\fP .IP \(bu 2 -\fI\%MarkupSafe\fP \- Implements a XML/HTML/XHTML Markup safe string for Python +\fI\%https://github.com/rentalita/ubuntu\-setup/\fP .IP \(bu 2 -\fI\%apache\-libcloud\fP \- Python lib for interacting with many of the popular -cloud service providers using a unified API +\fI\%https://github.com/brutasse/states\fP .IP \(bu 2 -\fI\%Requests\fP \- HTTP library +\fI\%https://github.com/pcrews/salt\-data\fP +.UNINDENT +.SS Follow on ohloh +.sp +\fI\%https://www.ohloh.net/p/salt\fP +.SS Other community links +.INDENT 0.0 .IP \(bu 2 -\fI\%Tornado\fP \- Web framework and asynchronous networking library +\fI\%Salt Project\fP .IP \(bu 2 -\fI\%futures\fP \- Python2 only dependency. Backport of the concurrent.futures package from Python 3.2 +\fI\%Subreddit\fP .IP \(bu 2 -ZeroMQ: -.INDENT 2.0 +\fI\%YouTube\fP .IP \(bu 2 -\fI\%ZeroMQ\fP >= 3.2.0 +\fI\%Twitch\fP .IP \(bu 2 -\fI\%pyzmq\fP >= 2.2.0 \- ZeroMQ Python bindings +\fI\%Facebook\fP .IP \(bu 2 -\fI\%PyCrypto\fP \- The Python cryptography toolkit -.UNINDENT -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 0.0 -.INDENT 3.5 -For historical reasons, Salt requires PyCrypto as a "lowest common -denominator". However, \fI\%PyCrypto is unmaintained\fP and best practice is to -manually upgrade to use a more maintained library such as \fI\%PyCryptodome\fP\&. See -\fI\%Issue #52674\fP and \fI\%Issue #54115\fP for more info -.UNINDENT -.UNINDENT -.sp -Salt defaults to the \fI\%ZeroMQ\fP transport. The \fB\-\-salt\-transport\fP installation -option is available, but currently only supports the \fBzeromq\fP option. This -may be expanded in the future. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -python setup.py \-\-salt\-transport=zeromq install -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -This way, only the required dependencies are pulled by the setup script if need -be. -.sp -If installing using pip, the \fB\-\-salt\-transport\fP install option can be -provided like: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -pip install \-\-install\-option="\-\-salt\-transport=zeromq" salt -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -Salt does not bundle dependencies that are typically distributed as part of -the base OS. If you have unmet dependencies and are using a custom or -minimal installation, you might need to install some additional packages -from your OS vendor. -.UNINDENT -.UNINDENT -.SS Optional Dependencies -.INDENT 0.0 +\fI\%Twitter\fP .IP \(bu 2 -\fI\%mako\fP \- an optional parser for Salt States (configurable in the master -settings) +\fI\%Wikipedia page\fP .IP \(bu 2 -gcc \- dynamic \fI\%Cython\fP module compiling -.UNINDENT -.SS Upgrading Salt -.sp -When upgrading Salt, the master(s) should always be upgraded first. Backward -compatibility for minions running newer versions of salt than their masters is -not guaranteed. -.sp -Whenever possible, backward compatibility between new masters and old minions -will be preserved. Generally, the only exception to this policy is in case of -a security vulnerability. -.sp -\fBSEE ALSO:\fP -.INDENT 0.0 -.INDENT 3.5 -Installing Salt for development and -contributing to the project. -.UNINDENT +\fI\%Stack Overflow\fP .UNINDENT -.SS Building Packages using Salt Pack +.SS Hack the Source .sp -Salt\-pack is an open\-source package builder for most commonly used Linux -platforms, for example: Redhat/CentOS and Debian/Ubuntu families, utilizing -SaltStack states and execution modules to build Salt and a specified set of -dependencies, from which a platform specific repository can be built. +If you want to get involved with the development of source code or the +documentation efforts, please review the contributing documentation! +.SH INSTALLATION .sp -\fI\%https://github.com/saltstack/salt\-pack\fP +See the \fI\%Salt Install Guide\fP +for the current installation instructions. .SH CONFIGURING SALT .sp This section explains how to configure user access, view and store job results, @@ -6510,7 +1623,7 @@ presence_events: False Default: False .sp When checking the minions connected to a master, also include the master\(aqs -connections to minions on the port specfied in the setting \fIremote_minions_port\fP\&. +connections to minions on the port specified in the setting \fIremote_minions_port\fP\&. This is particularly useful when checking if the master is connected to any Heist\-Salt minions. If this setting is set to True, the master will check all connections on port 22 by default unless a user also configures a different port with the setting @@ -8434,6 +3547,38 @@ state_output_profile: True .fi .UNINDENT .UNINDENT +.SS \fBstate_output_pct\fP +.sp +Default: \fBFalse\fP +.sp +The \fBstate_output_pct\fP setting changes whether success and failure information +as a percent of total actions will be shown for each state run. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +state_output_pct: False +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBstate_compress_ids\fP +.sp +Default: \fBFalse\fP +.sp +The \fBstate_compress_ids\fP setting aggregates information about states which +have multiple "names" under the same state ID in the highstate output. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +state_compress_ids: False +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBstate_aggregate\fP .sp Default: \fBFalse\fP @@ -8585,36 +3730,6 @@ fileserver_ignoresymlinks: False .fi .UNINDENT .UNINDENT -.SS \fBfileserver_limit_traversal\fP -.sp -New in version 2014.1.0. - -.sp -Deprecated since version 2018.3.4: This option is now ignored. Firstly, it only traversed -\fI\%file_roots\fP, which means it did not work for the other -fileserver backends. Secondly, since this option was added we have added -caching to the code that traverses the file_roots (and gitfs, etc.), which -greatly reduces the amount of traversal that is done. - -.sp -Default: \fBFalse\fP -.sp -By default, the Salt fileserver recurses fully into all defined environments -to attempt to find files. To limit this behavior so that the fileserver only -traverses directories with SLS files and special Salt directories like _modules, -set \fBfileserver_limit_traversal\fP to \fBTrue\fP\&. This might be useful for -installations where a file root has a very large number of files and performance -is impacted. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -fileserver_limit_traversal: False -.ft P -.fi -.UNINDENT -.UNINDENT .SS \fBfileserver_list_cache_time\fP .sp New in version 2014.1.0. @@ -8783,6 +3898,9 @@ master_roots: .UNINDENT .SS roots: Master\(aqs Local File Server .SS \fBfile_roots\fP +.sp +Changed in version 3005. + .sp Default: .INDENT 0.0 @@ -8830,6 +3948,42 @@ file_roots: .UNINDENT .UNINDENT .sp +Taking dynamic environments one step further, \fB__env__\fP can also be used in +the \fBfile_roots\fP filesystem path as of version 3005. It will be replaced with +the actual \fBsaltenv\fP and searched for states and data to provide to the +minion. Note this substitution ONLY occurs for the \fB__env__\fP environment. For +instance, this configuration: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +file_roots: + __env__: + \- /srv/__env__/salt +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +is equivalent to this static configuration: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +file_roots: + dev: + \- /srv/dev/salt + test: + \- /srv/test/salt + prod: + \- /srv/prod/salt +.ft P +.fi +.UNINDENT +.UNINDENT +.sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 @@ -10127,6 +5281,9 @@ s3fs_update_interval: 120 .UNINDENT .SS Pillar Configuration .SS \fBpillar_roots\fP +.sp +Changed in version 3005. + .sp Default: .INDENT 0.0 @@ -10165,6 +5322,42 @@ pillar_roots: .fi .UNINDENT .UNINDENT +.sp +Taking dynamic environments one step further, \fB__env__\fP can also be used in +the \fBpillar_roots\fP filesystem path as of version 3005. It will be replaced +with the actual \fBpillarenv\fP and searched for Pillar data to provide to the +minion. Note this substitution ONLY occurs for the \fB__env__\fP environment. For +instance, this configuration: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +pillar_roots: + __env__: + \- /srv/__env__/pillar +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +is equivalent to this static configuration: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +pillar_roots: + dev: + \- /srv/dev/pillar + test: + \- /srv/test/pillar + prod: + \- /srv/prod/pillar +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBon_demand_ext_pillar\fP .sp New in version 2016.3.6,2016.11.3,2017.7.0. @@ -10284,6 +5477,38 @@ decrypt_pillar_renderers: .fi .UNINDENT .UNINDENT +.SS \fBgpg_decrypt_must_succeed\fP +.sp +New in version 3005. + +.sp +Default: \fBFalse\fP +.sp +If this is \fBTrue\fP and the ciphertext could not be decrypted, then an error is +raised. +.sp +Sending the ciphertext through basically is \fInever\fP desired, for example if a +state is setting a database password from pillar and gpg rendering fails, then +the state will update the password to the ciphertext, which by definition is +not encrypted. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +The value defaults to \fBFalse\fP for backwards compatibility. In the +\fBChlorine\fP release, this option will default to \fBTrue\fP\&. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +gpg_decrypt_must_succeed: False +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBpillar_opts\fP .sp Default: \fBFalse\fP @@ -12657,6 +7882,19 @@ The type of the \fI\%master\fP variable. Can be \fBstr\fP, \fBfailover\fP, .sp .nf .ft C +master_type: str +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +If this option is \fBstr\fP (default), multiple hot masters are configured. +Minions can connect to multiple masters simultaneously (all master are "hot"). +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C master_type: failover .ft P .fi @@ -13593,6 +8831,27 @@ grains_refresh_every: 0 .fi .UNINDENT .UNINDENT +.SS \fBgrains_refresh_pre_exec\fP +.sp +New in version 3005. + +.sp +Default: \fBFalse\fP +.sp +The \fBgrains_refresh_pre_exec\fP setting allows for a minion to check its grains +prior to the execution of any operation to see if they have changed and, if +so, to inform the master of the new grains. This operation is moderately +expensive, therefore care should be taken before enabling this behavior. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +grains_refresh_pre_exec: True +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBmetadata_server_grains\fP .sp New in version 2017.7.0. @@ -15186,6 +10445,38 @@ state_output_profile: True .fi .UNINDENT .UNINDENT +.SS \fBstate_output_pct\fP +.sp +Default: \fBFalse\fP +.sp +The \fBstate_output_pct\fP setting changes whether success and failure information +as a percent of total actions will be shown for each state run. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +state_output_pct: False +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBstate_compress_ids\fP +.sp +Default: \fBFalse\fP +.sp +The \fBstate_compress_ids\fP setting aggregates information about states which +have multiple "names" under the same state ID in the highstate output. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +state_compress_ids: False +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBautoload_dynamic_modules\fP .sp Default: \fBTrue\fP @@ -15416,29 +10707,6 @@ fileserver_ignoresymlinks: False .fi .UNINDENT .UNINDENT -.SS \fBfileserver_limit_traversal\fP -.sp -New in version 2014.1.0. - -.sp -Default: \fBFalse\fP -.sp -By default, the Salt fileserver recurses fully into all defined environments -to attempt to find files. To limit this behavior so that the fileserver only -traverses directories with SLS files and special Salt directories like _modules, -set \fBfileserver_limit_traversal\fP to \fBTrue\fP\&. This might be useful for -installations where a file root has a very large number of files and performance -is impacted. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -fileserver_limit_traversal: False -.ft P -.fi -.UNINDENT -.UNINDENT .SS \fBhash_type\fP .sp Default: \fBsha256\fP @@ -15610,6 +10878,38 @@ decrypt_pillar_renderers: .fi .UNINDENT .UNINDENT +.SS \fBgpg_decrypt_must_succeed\fP +.sp +New in version 3005. + +.sp +Default: \fBFalse\fP +.sp +If this is \fBTrue\fP and the ciphertext could not be decrypted, then an error is +raised. +.sp +Sending the ciphertext through basically is \fInever\fP desired, for example if a +state is setting a database password from pillar and gpg rendering fails, then +the state will update the password to the ciphertext, which by definition is +not encrypted. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +The value defaults to \fBFalse\fP for backwards compatibility. In the +\fBChlorine\fP release, this option will default to \fBTrue\fP\&. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +gpg_decrypt_must_succeed: False +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBpillarenv\fP .sp Default: \fBNone\fP @@ -16767,6 +12067,17 @@ needs to be set is the master value so the proxy knows where to locate its maste By default, the salt\-proxy configuration will be in \fB/etc/salt/proxy\fP\&. A notable exception is FreeBSD, where the configuration will be in \fB/usr/local/etc/salt/proxy\fP\&. +.sp +With the Salt 3004 release, the ability to configure proxy minions using the delta proxy +was introduced. The delta proxy provides the ability for a single control proxy +minion to manage multiple proxy minions. +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +Installing and Using Deltaproxy +.UNINDENT +.UNINDENT .SS Proxy\-specific Configuration Options .SS \fBadd_proxymodule_to_opts\fP .sp @@ -16928,6 +12239,518 @@ Allow enabling mine details using pillar data. This evaluates the mine configuration under the pillar, for the following regular minion options that are also equally available on the proxy minion: \fBmine_interval\fP, and \fBmine_functions\fP\&. +.SS Delta proxy minions +.sp +Welcome to the delta proxy minion installation guide. This installation +guide explains the process for installing and using delta proxy minion +which is available beginning in version 3004. +.sp +This guide is intended for system and network administrators with the general +knowledge and experience required in the field. This guide is also intended for +users that have ideally already tested and used standard Salt proxy minions in +their environment before deciding to move to a delta proxy minion environment. +See \fI\%Salt proxy minions\fP for more information. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +If you have not used standard Salt proxy minions before, consider testing +and deploying standard Salt proxy minions in your environment first. +.UNINDENT +.UNINDENT +.SS Proxy minions vs. delta proxy minions +.sp +Salt can target network devices through \fI\%Salt proxy minions\fP, +Proxy minions allow you to control network devices that, for whatever reason, +cannot run the standard Salt minion. Examples include: +.INDENT 0.0 +.IP \(bu 2 +Network gear that has an API but runs a proprietary operating system +.IP \(bu 2 +Devices with limited CPU or memory +.IP \(bu 2 +Devices that could run a minion but will not for security reasons +.UNINDENT +.sp +A proxy minion acts as an intermediary between the Salt master and the +device it represents. The proxy minion runs on the Salt master and then +translates commands from the Salt master to the device as needed. +.sp +By acting as an intermediary for the actual minion, proxy minions eliminate +the need to establish a constant connection from a Salt master to a minion. Proxy +minions generally only open a connection to the actual minion when necessary. +.sp +Proxy minions also reduce the amount of CPU or memory the minion must spend +checking for commands from the Salt master. Proxy minions use the Salt master\(aqs CPU +or memory to check for commands. The actual minion only needs to use CPU or +memory to run commands when needed. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +For more information about Salt proxy minions, see: +.INDENT 0.0 +.IP \(bu 2 +\fI\%Salt proxy minions\fP +.IP \(bu 2 +\fI\%Salt proxy modules\fP +.UNINDENT +.UNINDENT +.UNINDENT +.SS When delta proxy minions are needed +.sp +Normally, you would create a separate instance of proxy minion for each device +that needs to be managed. However, this doesn\(aqt always scale well if you have +thousands of devices. Running several thousand proxy minions can require a lot +of memory and CPU. +.sp +A delta proxy minion can solve this problem: it makes it possible to run one +minion that acts as the intermediary between the Salt master and the many network +devices it can represent. In this scenario, one device (the delta proxy minion +on the Salt master) runs several proxies. This configuration boosts performance and +improves the overall scalability of the network. +.SS Key terms +.sp +The following lists some important terminology that is used throughout this +guide: +.TS +center; +|l|l|. +_ +T{ +Term +T} T{ +Definition +T} +_ +T{ +Salt master +T} T{ +The Salt master is a central node running the Salt master server. +The Salt master issues commands to minions. +T} +_ +T{ +minion +T} T{ +Minions are nodes running the Salt minion service. Minions listen +to commands from a Salt master and perform the requested tasks, then return +data back to the Salt master as needed. +T} +_ +T{ +proxy minion +T} T{ +A Salt master that is running the proxy\-minion service. The proxy minion +acts as an intermediary between the Salt master and the device it represents. +The proxy minion runs on the Salt master and then translates commands from +the Salt master to the device. A separate instance of proxy minion is +needed for each device that is managed. +T} +_ +T{ +delta proxy minion +T} T{ +A Salt master that is running the delta proxy\-minion service. The +delta proxy minion acts as the intermediary between the Salt master and the +many network devices it can represent. Only one instance of the delta +proxy service is needed to run several proxies. +T} +_ +T{ +control proxy +T} T{ +The control proxy runs on the Salt master. It manages a list of devices and +issues commands to the network devices it represents. The Salt master needs +at least one control proxy, but it is possible to have more than one +control proxy, each managing a different set of devices. +T} +_ +T{ +managed device +T} T{ +A device (such as Netmiko) that is managed by proxy minions or by a +control proxy minion. The proxy minion or control proxy only creates +a connection to the actual minion it needs to issue a command. +T} +_ +T{ +pillar file +T} T{ +Pillars are structures of data (files) defined on the Salt master and passed +through to one or more minions when the minion needs access to the +pillar file. Pillars allow confidential, targeted data to be securely sent +only to the relevant minion. Because all configurations for +delta proxy minions are done on the Salt master (not on the minions), you +use pillar files to configure the delta proxy\-minion service. +T} +_ +T{ +top file +T} T{ +The top file is a pillar file that maps which states should be applied to +different minions in certain environments. +T} +_ +.TE +.SS Pre\-installation +.SS Before you start +.sp +Before installing the delta proxy minion, ensure that: +.INDENT 0.0 +.IP \(bu 2 +Your network device and firmware are supported. +.IP \(bu 2 +The Salt master that is acting as the control proxy minion has network +access to the devices it is managing. +.IP \(bu 2 +You have installed, configured, and tested standard Salt proxy minions in +your environment before introducing delta proxy minions into your +environment. +.UNINDENT +.SS Install or upgrade Salt +.sp +Ensure your Salt masters are running at least Salt version 3004. For instructions +on installing or upgrading Salt, see \fI\%repo.saltproject.io\fP\&. For RedHat systems, see \fI\%Install or Upgrade Salt\fP\&. +.SS Installation +.sp +Before you begin the delta proxy minion installation process, ensure you +have read and completed the \fI\%Pre\-installation\fP steps. +.SS Overview of the installation process +.sp +Similar to proxy minions, all the delta proxy minion configurations are done +on the Salt master rather than on the minions that will be managed. The +installation process has the following phases: +.INDENT 0.0 +.IP 1. 3 +\fI\%Configure the master to use delta proxy\fP \- Create a +configuration file on the Salt master that defines its proxy settings. +.IP 2. 3 +\fI\%Create a pillar file for each managed device\fP \- Create a +pillar file for each device that will be managed by the delta proxy minion +and reference these minions in the top file. +.IP 3. 3 +\fI\%Create a control proxy configuration file\fP \- Create a control proxy file +that lists the devices that it will manage. Then, reference this file in the +top file. +.IP 4. 3 +\fI\%Start the delta proxy minion\fP \- Start the delta proxy\-minion service and +validate that it has been set up correctly. +.UNINDENT +.SS Configure the master to use delta proxy +.sp +In this step, you\(aqll create a configuration file on the Salt master that defines +its proxy settings. This is a general configuration file that tells the Salt master +how to handle all proxy minions. +.sp +To create this configuration: +.INDENT 0.0 +.IP 1. 3 +On the Salt master, navigate to the \fB/etc/salt\fP directory. In this directory, +create a file named \fBproxy\fP if one doesn\(aqt already exist. +.IP 2. 3 +Open the file in your preferred editor and add the following configuration +information: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +# Use delta proxy metaproxy +metaproxy: deltaproxy + +# Disable the FQDNS grain +enable_fqdns_grains: False + +# Enabled multprocessing +multiprocessing: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 3.0 +.INDENT 3.5 +See the following section about \fI\%delta proxy configuration options\fP for +a more detailed description of these configuration options. +.UNINDENT +.UNINDENT +.IP 3. 3 +Save the file. +.UNINDENT +.sp +Your Salt master is now configured to use delta proxy. Next, you need to +\fI\%Create a pillar file for each managed device\fP\&. +.SS Delta proxy configuration options +.sp +The following table describes the configuration options used in the delta +proxy configuration file: +.TS +center; +|l|l|. +_ +T{ +Field +T} T{ +Description +T} +_ +T{ +metaproxy +T} T{ +Set this configuration option to \fBdeltaproxy\fP\&. If this option is set to +\fBproxy\fP or if this line is not included in the file, the Salt master will +use the standard proxy service instead of the delta proxy service. +T} +_ +T{ +enable_fqdns_grains +T} T{ +If your router does not have the ability to use Reverse DNS lookup to +obtain the Fully Qualified Domain Name (fqdn) for an IP address, you\(aqll +need to change the \fBenable_fqdns_grains\fP setting in the pillar +configuration file to \fBFalse\fP instead. +T} +_ +T{ +multiprocessing +T} T{ +Multi\-processing is the ability to run more than one task or process at +the same time. A delta proxy minion has the ability to run with +multi\-processing turned off. +.sp +If you plan to run with multi\-processing enabled, you should also enable +the \fBskip_connect_on_init\fP setting to \fBTrue\fP\&. +T} +_ +T{ +skip_connect_on_init +T} T{ +This setting tells the control proxy whether or not it should make a +connection to the managed device when it starts. When set to \fBTrue\fP, the +delta proxy minion will only connect when it needs to issue commands to +the managed devices. +T} +_ +.TE +.SS Create a pillar file for each managed device +.sp +Each device that needs to be managed by delta proxy needs a separate pillar +file on the Salt master. To create this file: +.INDENT 0.0 +.IP 1. 3 +Navigate to the \fB/srv/pillar\fP directory. +.IP 2. 3 +In this directory create a new pillar file for a minion. For example, +\fBmy_managed_device_pillar_file_01.sls\fP\&. +.IP 3. 3 +Open the new file in your preferred editor and add the necessary +configuration information for that minion and your environment. The +following is an example pillar file for a Netmiko device: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +proxy: + proxytype: netmiko + device_type: arista_eos + host: 192.0.2.1 + username: myusername + password: mypassword + always_alive: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 3.0 +.INDENT 3.5 +The available configuration options vary depending on the proxy type (in +other words, the type of device it is). To read a detailed explanation of +the configuration options, refer to the proxy module documentation for +the type of device you need to manage. See: +.INDENT 0.0 +.IP \(bu 2 +\fI\%Salt proxy modules\fP +.IP \(bu 2 +\fI\%Netmiko Salt proxy module\fP +.UNINDENT +.UNINDENT +.UNINDENT +.IP 4. 3 +Save the file. +.IP 5. 3 +In an editor, open the top file: \fB/srv/pillar/top.sls\fP\&. +.IP 6. 3 +Add a section to the top file that indicates the minion ID of the device +that will be managed. Then, list the name of the pillar file you created in +the previous steps. For example: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +my_managed_device_minion_ID: + \- my_managed_device_pillar_file_01 +.ft P +.fi +.UNINDENT +.UNINDENT +.IP 7. 3 +Repeat the previous steps for each minion that needs to be managed. +.UNINDENT +.sp +You\(aqve now created the pillar file for the minions that will be managed by the +delta proxy minion and you have referenced these files in the top file. +Proceed to the next section. +.SS Create a control proxy configuration file +.sp +On the Salt master, you\(aqll need to create or edit a control proxy file for each +control proxy. The control proxy manages several devices and issues commands to +the network devices it represents. The Salt master needs at least one control +proxy, but it is possible to have more than one control proxy, each managing a +different set of devices. +.sp +To configure a control proxy, you\(aqll create a file that lists the minion IDs +of the minions that it will manage. Then you will reference this control proxy +configuration file in the top file. +.sp +To create a control proxy configuration file: +.INDENT 0.0 +.IP 1. 3 +On the Salt master, navigate to the \fB/srv/pillar\fP directory. In this +directory, create a new proxy configuration file. Give this file a +descriptive name, such as \fBcontrol_proxy_01_configuration.sls\fP\&. +.IP 2. 3 +Open the file in your preferred editor and add a list of the minion IDs for +each device that needs to be managed. For example: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +proxy: + proxytype: deltaproxy + ids: + \- my_managed_device_01 + \- my_managed_device_02 + \- my_managed_device_03 +.ft P +.fi +.UNINDENT +.UNINDENT +.IP 3. 3 +Save the file. +.IP 4. 3 +In an editor, open the top file: \fB/srv/pillar/top.sls\fP\&. +.IP 5. 3 +Add a section to the top file that indicates references the delta proxy +control proxy. For example: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +base: + my_managed_device_minion_01: + \- my_managed_device_pillar_file_01 + my_managed_device_minion_02: + \- my_managed_device_pillar_file_02 + my_managed_device_minion_03: + \- my_managed_device_pillar_file_03 + delta_proxy_control: + \- control_proxy_01_configuration +.ft P +.fi +.UNINDENT +.UNINDENT +.IP 6. 3 +Repeat the previous steps for each control proxy if needed. +.UNINDENT +.sp +Now that you have created the necessary configurations, proceed to the next +section. +.SS Start the delta proxy minion +.sp +After you\(aqve successfully configured the delta proxy minion, you need to +start the proxy minion service for each managed device and validate that it is +working correctly. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This step explains the process for starting a single instance of a +delta proxy minion. Because starting each minion individually can +potentially be very time\-consuming, most organizations use a script to start +their delta proxy minions since there are typically many devices being +managed. Consider implementing a similar script for your environment to save +time in deployment. +.UNINDENT +.UNINDENT +.sp +To start a single instance of a delta proxy minion and test that it is +configured correctly: +.INDENT 0.0 +.IP 1. 3 +In the terminal for the Salt master, run the following command, replacing the +placeholder text with the actual minion ID: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo salt\-proxy \-\-proxyid=my_managed_device_minion_ID +.ft P +.fi +.UNINDENT +.UNINDENT +.IP 2. 3 +To test the delta proxy minion, run the following \fBtest.version\fP command +on the Salt master and target a specific minion. For example: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt my_managed_device_minion_ID test.version +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +This command returns an output similar to the following: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +local: + 3004 +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.sp +After you\(aqve successfully started the delta proxy minions and verified that +they are working correctly, you can now use these minions the same as standard +proxy minions. +.SS Additional resources +.sp +This reference section includes additional resources for delta proxy minions. +.sp +For reference, see: +.INDENT 0.0 +.IP \(bu 2 +\fI\%Salt proxy minions\fP +.IP \(bu 2 +\fI\%Salt proxy modules\fP +.IP \(bu 2 +\fI\%Netmiko Salt proxy module\fP +.UNINDENT .SS Configuration file examples .INDENT 0.0 .IP \(bu 2 @@ -17584,6 +13407,14 @@ and \fBmine_functions\fP\&. # will be shown for each state run. #state_output_profile: True +# The state_output_pct setting changes whether success and failure information +# as a percent of total actions will be shown for each state run. +#state_output_pct: False + +# The state_compress_ids setting aggregates information about states which have +# multiple "names" under the same state ID in the highstate output. +#state_compress_ids: False + # Automatically aggregate all states that have support for mod_aggregate by # setting to \(aqTrue\(aq. Or pass a list of state module names to automatically # aggregate just those types. @@ -17707,13 +13538,6 @@ and \fBmine_functions\fP\&. # files on the Master will not be returned to the Minion. #fileserver_ignoresymlinks: True # -# By default, the Salt fileserver recurses fully into all defined environments -# to attempt to find files. To limit this behavior so that the fileserver only -# traverses directories with SLS files and special Salt directories like _modules, -# enable the option below. This might be useful for installations where a file root -# has a very large number of files and performance is impacted. Default is False. -# fileserver_limit_traversal: False -# # The fileserver can fire events off every time the fileserver is updated, # these are disabled by default, but can be easily turned on by setting this # flag to True @@ -17821,6 +13645,10 @@ and \fBmine_functions\fP\&. #decrypt_pillar_renderers: # \- gpg +# If this is \(gaTrue\(ga and the ciphertext could not be decrypted, then an error is +# raised. +#gpg_decrypt_must_succeed: False + # The ext_pillar_first option allows for external pillar sources to populate # before file system pillar. This allows for targeting file system pillar from # ext_pillar. @@ -18564,7 +14392,7 @@ and \fBmine_functions\fP\&. # To auto recover minions if master changes IP address (DDNS) # auth_tries: 10 -# auth_safemode: False +# auth_safemode: True # ping_interval: 2 # # Minions won\(aqt know master is missing until a ping fails. After the ping fail, @@ -18663,6 +14491,12 @@ and \fBmine_functions\fP\&. # If the value is set to zero, this check is disabled. #grains_refresh_every: 1 +# The grains_refresh_pre_exec setting allows for a minion to check its grains +# prior to the execution of any operation to see if they have changed and, if +# so, to inform the master of the new grains. This operation is moderately +# expensive, therefore care should be taken before enabling this behavior. +#grains_refresh_pre_exec: False + # Cache grains on the minion. Default is False. #grains_cache: False @@ -18931,14 +14765,6 @@ and \fBmine_functions\fP\&. # files on the Master will not be returned to the Minion. #fileserver_ignoresymlinks: True # -# By default, the Salt fileserver recurses fully into all defined environments -# to attempt to find files. To limit this behavior so that the fileserver only -# traverses directories with SLS files and special Salt directories like _modules, -# enable the option below. This might be useful for installations where a file root -# has a very large number of files and performance is negatively impacted. Default -# is False. -#fileserver_limit_traversal: False - # The hash_type is the hash to use when discovering the hash of a file on # the local fileserver. The default is sha256, but md5, sha1, sha224, sha384 # and sha512 are also supported. @@ -18957,6 +14783,10 @@ and \fBmine_functions\fP\&. # base: # \- /srv/pillar +# If this is \(gaTrue\(ga and the ciphertext could not be decrypted, then an error is +# raised. +#gpg_decrypt_must_succeed: False + # Set a hard\-limit on the size of the files that can be pushed to the master. # It will be interpreted as megabytes. Default: 100 #file_recv_max_size: 100 @@ -19002,6 +14832,14 @@ and \fBmine_functions\fP\&. # will be shown for each state run. #state_output_profile: True +# The state_output_pct setting changes whether success and failure information +# as a percent of total actions will be shown for each state run. +#state_output_pct: False + +# The state_compress_ids setting aggregates information about states which have +# multiple "names" under the same state ID in the highstate output. +#state_compress_ids: False + # Fingerprint of the master public key to validate the identity of your Salt master # before the initial key exchange. The master fingerprint can be found by running # "salt\-key \-f master.pub" on the Salt master. @@ -19686,14 +15524,6 @@ and \fBmine_functions\fP\&. # base: # \- /srv/salt -# By default, the Salt fileserver recurses fully into all defined environments -# to attempt to find files. To limit this behavior so that the fileserver only -# traverses directories with SLS files and special Salt directories like _modules, -# enable the option below. This might be useful for installations where a file root -# has a very large number of files and performance is negatively impacted. Default -# is False. -#fileserver_limit_traversal: False - # The hash_type is the hash to use when discovering the hash of a file in # the local fileserver. The default is sha256 but sha224, sha384 and sha512 # are also supported. @@ -19753,6 +15583,14 @@ and \fBmine_functions\fP\&. # will be shown for each state run. #state_output_profile: True +# The state_output_pct setting changes whether success and failure information +# as a percent of total actions will be shown for each state run. +#state_output_pct: False + +# The state_compress_ids setting aggregates information about states which have +# multiple "names" under the same state ID in the highstate output. +#state_compress_ids: False + # Fingerprint of the master public key to validate the identity of your Salt master # before the initial key exchange. The master fingerprint can be found by running # "salt\-key \-F master" on the Salt master. @@ -22241,7 +18079,7 @@ Sentry Logging Handler T} _ .TE -.SS salt.log.handlers.fluent_mod +.SS salt.log_handlers.fluent_mod .SS Fluent Logging Handler .sp New in version 2015.8.0. @@ -22325,7 +18163,7 @@ for \fBlog_level\fP in the global configuration file section. This work was inspired in \fI\%fluent\-logger\-python\fP .UNINDENT .UNINDENT -.SS salt.log.handlers.log4mongo_mod +.SS salt.log_handlers.log4mongo_mod .SS Log4Mongo Logging Handler .sp This module provides a logging handler for sending salt logs to MongoDB @@ -22362,7 +18200,7 @@ This work was inspired by the Salt logging handlers for LogStash and Sentry and by the log4mongo Python implementation. .UNINDENT .UNINDENT -.SS salt.log.handlers.logstash_mod +.SS salt.log_handlers.logstash_mod .SS Logstash Logging Handler .sp New in version 0.17.0. @@ -22546,7 +18384,7 @@ This work was inspired in \fI\%pylogstash\fP, \fI\%python\-logstash\fP, \fI\%can and the \fI\%PyZMQ logging handler\fP\&. .UNINDENT .UNINDENT -.SS salt.log.handlers.sentry_mod +.SS salt.log_handlers.sentry_mod .SS Sentry Logging Handler .sp New in version 0.17.0. @@ -26533,19 +22371,44 @@ ZDwKmiQz/5LY5EhlWcuU4lVmMSFpWXt5FR/PtzgTdZAo9QKkBjcv97LYbXvsPI69 El1BLAg+m+1UpE1L7zJT1il6PqVyEFAWBxW46wXCCkGssFsvz2yRp0PDX8A6u4yq rTkt09uYht1is61joLDJ/kq3+6k8gJWkDOW+2NMrmf+/qcdYCMYXmrtOpg/wF27W GMNAkbdyzgeX/MbUBCGCMdzhevRuivOI5bu4vT5s3KdshG+yhzV45bapKRd5VN+1 -mZRqiQJVBBMBCAA/AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgBYhBIq+Tvzw -9LJL/yqvkNVw8tNOoHk9BQJe1uRXBQkPoTz0AAoJENVw8tNOoHk9akAQANKIDIBY -J3DmWH3g6rWURdREQcBVfMkw6j5MHlIEwlGrN3whSaPv2KR3tatRccBCQ0olQeYb -ZeFtPuf0Du+LqGaAePo5DkPNU7GHoba2+ZE/sJ4wZ4CzAQM6+LvH2iLHeLZ1VLlu -ZEftxD1RFKTqpnav8KiyYGkeFuEn4eMSIhbudp/8wkN40sCWL22D141EhVSRvLlO -BMUpTWdtSYTg0F2pgQL5U2A56syuiwUwPXzQb45JEJILmG8zkeJB9s8kGtErypIH -P+qxJXq24woGUFeJjiLdiOhI6/YoVBACUkKmig36CGf/DH5NAeQECeZq3YBNp7XK -tsF1dPitxuTM/UkOHoHUnGhDlBcQMWe9WuBK4rA+7GH9NT8o7M6+2OKhk181tJ+s -Y2kP7RSXOV162thRsNvVImXajAIFTR3ksEDFGVq/4jh85jFoIbNH3x27NxOu6e2p -OIkXNXmSFXLUmwbfEfIk06gqP3xzkaj+eWHcLDkn9bUKblBJhHdhf9Vsy/N2NRW2 -23c64qDutw1NX7msDuN3KXisim+isBzPVVzymkkhkXK+UpjrRR0ePvph3fnGf1bc -NipVtn1KKM7kurSrSjFVLwLi52SGnEHKJnbbhh+AKV09SNYi6IaKL8yw8c1d0K80 -PlBaJEvkC6myzaaRtYcna4pbiIysBaZtwDOOuQINBFO15mMBEAC5UuLii9ZLz6qH +mZRqiQJVBBMBAgA/AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgBYhBIq+Tvzw +9LJL/yqvkNVw8tNOoHk9BQJb0e5rBQkL3m8IAAoJENVw8tNOoHk9fzMP/ApQtkQD +BmoYEBTF6BH1bywzDw5OHpnBSLbuoYtA3gkhnm/83MzFDcGn22pgo2Fv0MuHltWI +G2oExzje7szmcM6Xg3ZTKapJ3/p2J+P33tkJA1LWpg+DdgdQlqrjlXKwEnikszuB +9IMhbjoPeBzwiUtsBQmcwbVgwMzbscwoV5DJ/gLDCkgF4rp2uKEYAcBi8s9NGX6p +zQsb9Sb0/bKdCrszAcvUn4WYB6WbAPttvutYHtg/nZfXEeX/SgBueXo3lO9vzFlO +r3Zgk7WeucsEqa9Qo0VLOq28HykixM5mEJKsAQrNIqM1DqXgfDch8RJAHzgMBHFH +Qi9hJXk1/6OA2FPXQGcA9Td5Dt0i1Z7wMrAUMj3s9gNMVCD0hQqEKfUtpyV7KBAj +AO5j8Wr8KafnRm6czBCkcV0SRzHQSHdYyncozWwPgWOaRC9AY9fEDz8lBaSoB/C+ +dyO/xZMTWoaWqkHozVoHIrCc4CAtZTye/5mxFhq15Q1Iy/NjelrMTCD1kql1dNIP +oOgfOYl1xLMQIBwrrCrgeRIvxEgKRf9KOLbSrS7+3vOKoxf+LD4AQfLci8dFyH+I +t0Z43nk93yTOI82RTdz5GwUXIKcvGhsJ8bgNlGTxM1R/Sl8Sg8diE2PRAp/fk7+g +CwOM8VkeyrDM2k1cy64d8USkbR7YtT3otyFQiQJVBBMBCAA/AhsDBgsJCAcDAgYV +CAIJCgsEFgIDAQIeAQIXgBYhBIq+Tvzw9LJL/yqvkNVw8tNOoHk9BQJeapbNBQkN +v4KKAAoJENVw8tNOoHk9BFQP/04a1yQb3aOYbNgx+ER9l54wZbUUlReU+ujmlW03 +12ZW8fFZ0SN2q7xKtE/I9nNl1gjJ7NHTP3FhZ0eNyG+mJeGyrscVKxaAkTV+71e3 +7n94/qC2bM753X+2160eR7Md+R/itoljStwmib1583rSTTUld1i4FnUTrEhF7MBt +I/+5l7vUK4Hj1RPovHVeHXYfdbrS6wCBi6GsdOfYGfGacZIfM4XLXTkyjVt4Zg0j +rwZ36P1amHky1QyvQ2stkXjCEtP04h3o3EfC1yupNXarO1VXj10/wWYhoGAz6AT2 +Usk6DiaiJqHPy2RwPfKzv7ZrUlMxKrqjPUHcoBf++EjzFtR3LJ0pY2fLwp6Pk4s4 +18Xwi7r16HnCH/BZgqZVyXAhDV6+U9rAHab/n4b0hcWWaT2SIhsyZKtEMiTMJeq5 +aAMcRSWX+dHO+MzMIBzNu7BO3b+zODD0+XSMsPqeHp3cqfZ3EHobKQPPFucdfjug +Hx2+dbPD3IwJVIilc9Otfz/+JYG4im5p4N6UCwXHbtiuuREC1SQpU9BqEjQAyIiL +gXlE5MSVqXijkrIpYB+K8cR+44nQ4K2kc4ievNqXR6D7XQ3AE76QN84Lby2b5W86 +bbboIy0Bgy+9jgCx0CS7fk1P8zx1dw2FNDVfxZ+s473ZvwP1wdSRZICjZUvM8hx4 +4kPCiQJVBBMBCAA/AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgBYhBIq+Tvzw +9LJL/yqvkNVw8tNOoHk9BQJiOkMeBQkUJ/c7AAoJENVw8tNOoHk9Xx8P/26W8v/v +Exmttzcqh7MlihddXfr2lughSuUBQ8aLsffGHSGIgyqSPlq0Fl5qOCoJ8hYZSBqV +yEfo7iRY7E3K1LGXKDkpup9hC1wMjR0A25eoXwEnD2vEQ/upXXueH05vkcMc165B +cK0kNxas+2amCc3nHJOlfWILXQk4OS+nB0lBWe8H96ppfAaX/G0JiYsa0hjNycZq +0ftEdCkAJRvSFuu6d3gXH69KLxoNcJOE+99f3wMOuOcX3Xf1k/cwqdJRdEiW8oz8 +Gf5ZRzWcpsXXg6nB2mkahLoRDMM2U+1C6fHbUg4yTvU1AB+F/OYqe1d0hedho0o5 ++WWoTuM/U79+m3NM14qvr0iJP7ytABiEE96nNAz+Q0NDZqA6JoUd7obo8KVjGHEt +9bRl/8K/zWkdNLoF84tWjEiBCzCKXGEay7lgiIx5f3OvP91CfGL+ILHrk/AZR1eE +M+KI7wB8sJEFF95UoKVua3YzLIFScB4bUEOg6bz8xSSP4a0BWktSm5ws8iCWqOE6 +S9haCppZ7a6k5czQNPJV2bp2eTS4ykFAQLv/mHMS5awIvb8b630Rufn1vZHKCrMf +WdSbBZD7oojxYo1psPlfzN2KUrNXgl7vAUNagJEogMoiYAZ2ML7rTVAC1qnbxQb+ +DeC+r0I98AIY6igIgRbcybH3ccfXYNtcxLUJuQINBFO15mMBEAC5UuLii9ZLz6qH fIJp35IOW9U8SOf7QFhzXR7NZ3DmJsd3f6Nb/habQFIHjm3K9wbpj+FvaW2oWRlF VvYdzjUq6c82GUUjW1dnqgUvFwdmM8351n0YQ2TonmyaF882RvsRZrbJ65uvy7SQ xlouXaAYOdqwLsPxBEOyOnMPSktW5V2UIWyxsNP3sADchWIGq9p5D3Y/loyIMsS1 @@ -26556,20 +22419,32 @@ K/szKt4Hy1bpSSBZU4W/XR7XwQNywmb3wxjmYT6Od3Mwj0jtzc3gQiH8hcEy3+BO Y+fiK6hAcL25amjzc+yYo9eaaqTn6RATbzdhHQZdpAMxY+vNT0+NhP1Zo5gYBMR6 5Zp/VhFsf67ijb03FUtdw9N8dHwiR2m8vVA8kO/gCD6wS2p9RdXqrJ9JhnHYWjiV uXR+f755ZAndyQfRtowMdQIoiXuJEXYw6XN+/BX81gJaynJYc0uw0MnxWQX+A5m8 -HqEsbIFUXBYXPgbwXTm7c4IHGgXXdwARAQABiQI8BBgBCAAmAhsMFiEEir5O/PD0 -skv/Kq+Q1XDy006geT0FAl7W5K0FCQ+hPUoACgkQ1XDy006geT1Q0Q//atnw1D4J -13nL8Mygk+ANY4Xljub/TeZqKtzmnWGso843XysErLH1adCu1KDX1Dj4/o3WoPOt -0O78uSS81N428ocOPKx+fA63n7q1mRqHHy6pLLVKoT66tmvE1ZN0ObaiPK9IxZkB -ThGlHJk9VaUg0vzAaRznogWeBh1dyZktVrtbUO5u4xDX9iql/unVmCWm+U1R7t4q -fqPEbk8ZnWc7x4bAZf8/vSQ93mAbpnRRuJdDK9tsiuhl8pRz7OyzvMS81rVF75ja -7CcShPofrW4yZ7FqAUMwTbfrvsAraWmDjW17Ao7C2dUA9ViwSKJ6u6Pd5no/hwbm -jVoxtO2RvjGOBxKneD36uENAUMBExjDTkSHmOxUYSknrEKUy7P1OL2ZHLG8/rouN -5ZvIxHiMkz12ukSt29IHvCngn1UB4/7+tvDHqug4ZAZPuwH7TC5Hk6WO0OoK8Eb2 -sQa2QoehQjwK0IakGd5kFEqKgbrwYPPa3my7l58nOZmPHdMcTOzgKvUEYAITjsT4 -oOtocs9Nj+cfCfp6YUn6JeYfiHs+Xhze5igdWIl0ZO5rTmbqcD8A1URKBds0WA+G -FLP9shPC0rS/L3Y1fKhqAc0h+znWBU6xjipTkmzh3FdM8gGT6g9YwGQNbi/x47k5 -vtBIWO4LPeGEvb2Gs65PL2eouOqU6yvBr5Y= -=F/97 +HqEsbIFUXBYXPgbwXTm7c4IHGgXXdwARAQABiQI8BBgBAgAmAhsMFiEEir5O/PD0 +skv/Kq+Q1XDy006geT0FAlvR7oMFCQvebyAACgkQ1XDy006geT2Hxw//Zha8j8Uc +4B+DmHhZIvPmHp9aFI4DWhC7CBDrYKztBz42H6eX+UsBu4p+uBDKdW9xJH+Qt/zF +nf/zB5Bhc/wFceVRCAkWxPdiIQeo5XQGjZeORjle7E9iunTko+5q1q9I7IgqWYrn +jRmulDvRhO7AoUrqGACDrV6t0F1/XPB8seR2i6axFmFlt1qBHasRq11yksdgNYiD +KXaovf7csDGPGOCWEKMX7BFGpdK/dWdNYfH0Arfom0U5TqNfvGtP4yRPx2bcs7/1 +VXPj7IqhBgOtA9pwtMjFki8HGkqj7bB2ErFBOnSwqqNnNcbnhiO6D74SHVGAHhKZ +whaMPDg76EvjAezoLHg7KWYOyUkWJSLa+YoM9r4+PJuEuW/XuaZCNbrAhek+p3pD +ywhElvZe/2UFk619qKzwSbTzk7a90rxLQ2wwtd0vxAW/GyjWl4/kOMZhI5+LAk1l +REucE0fSQxzCTeXu2ObvFR9ic02IYGH3Koz8CrGReEI1J05041Y5IhKxdsvGOD2W +e7ymcblYW4Gz8eYFlLeNJkj/38R7qmNZ028XHzAZDCAWDiTFrnCoglyk+U0JRHfg +HTsdvoc8mBdT/s24LhnfAbpLizlrZZquuOF6NLQSkbuLtmIwf+h9ynEEJxEkGGWg +7JqB1tMjNHLkRpveO/DTYB+iffpba1nCgumJAjwEGAEIACYCGwwWIQSKvk788PSy +S/8qr5DVcPLTTqB5PQUCYjpDOQUJFCf3VgAKCRDVcPLTTqB5PYDiEADaj1aAdXDb ++XrlhzlGCT3e16RDiE4BjSD1KHZX8ZDABI79JDG0iMN2PpWuViXq7AvWuwgNYdac +WjHsZGgHW82UoPVGKnfEVjjf0lQQIIcgdS5dEV8LamkeIo4vKUX/MZY+Mivk6luP +vCec9Euj/XU1nY6gGq6inpwDtZkNoJlCBune/IIGS82dU8RrSGAHNRZoaDJfdfQm +j7YAOWCUqyzn747yMyuMUOc15iJIgOz1dKN5YwDmFkzjlw+616Aswcp8UA0OfOQ+ +e4THli32BgKTSNeOGhGgx1xCDkt+0gP1L0L2Sqhlr6BnqNF65mQ4j2v6UGY1noCo +jYxFchoa1zEdEiZRr/sRO91XlJtK7HyIAI0cUHKVU+Cayoh//OBQBJnbeZlfh9Qn +4ead1pTz9bcKIeZleAjlzNG249bGY+82WsFghb4/7U9MYJVePz0m1zJKPkdABZ+R +lSDvhf4ImesfH5UuofZFv1UXmQL4yV7PDXXdy2xhma7YLznyZTUobDoJiZbuO72O +g5HJCpYoNfvGx++Z9naomUWufqi9PWigEMxU8lUtiGaLQrDW3inTOZTTmTnsJiAI +Lhku0Jr4SjCqxoEFydXOGvNV5XB4WXvf+A6JhcZI+/S72ai1CeSgMFiJLAEb2MZ+ +fwPKmQ2cKnCBs5ASj1DkgUcz2c8DTUPVqg== +=i1Tf \-\-\-\-\-END PGP PUBLIC KEY BLOCK\-\-\-\-\- .ft P .fi @@ -26634,19 +22509,20 @@ In addition to the mailing lists, SaltStack also provides the following resource .IP \(bu 2 \fI\%SaltStack Community Slack Workspace\fP .UNINDENT -.SS Salt Transport +.SS Salt Channels .sp -One of fundamental features of Salt is remote execution. Salt has two basic -"channels" for communicating with minions. Each channel requires a -client (minion) and a server (master) implementation to work within Salt. These -pairs of channels will work together to implement the specific message passing -required by the channel interface. +One of the fundamental features of Salt is remote execution. Salt has two basic +"channels" for communicating with minions. Each channel requires a client +(minion) and a server (master) implementation to work within Salt. These pairs +of channels will work together to implement the specific message passing +required by the channel interface. Channels use Transports +for sending and receiving messages. .SS Pub Channel .sp -The pub channel, or publish channel, is how a master sends a job (payload) to a +The pub (or pubish) channel is how a master sends a job (payload) to a minion. This is a basic pub/sub paradigm, which has specific targeting semantics. All data which goes across the publish system should be encrypted such that only -members of the Salt cluster can decrypt the publishes. +members of the Salt cluster can decrypt the published payloads. .SS Req Channel .sp The req channel is how the minions send data to the master. This interface is @@ -26655,33 +22531,54 @@ have two basic interfaces when talking to the master. \fBsend\fP is the basic method that guarantees the message is encrypted at least so that only minions attached to the same master can read it\-\- but no guarantee of minion\-master confidentiality, whereas the \fBcrypted_transfer_decode_dictentry\fP method does -guarantee minion\-master confidentiality. -.SS Zeromq Transport +guarantee minion\-master confidentiality. The req channel is also used by the +salt cli to publish jobs to the master. +.SS Salt Transport +.sp +Transports in Salt are used by Channels to send messages between Masters, Minions, +and the Salt CLI. Transports can be brokerless or brokered. There are two types +of server / client implementations needed to implement a channel. +.SS Publish Server +.sp +The publish server implements a publish / subscribe paradigm and is used by +Minions to receive jobs from Masters. +.SS Publish Client +.sp +The publish client subscribes to, and receives messages from a Publish Server. +.SS Request Server +.sp +The request server implements a request / reply paradigm. Every request sent by +the client must receive exactly one reply. +.SS Request Client +.sp +The request client sends requests to a Request Server and receives a reply message. +.SS ZeroMQ Transport .sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 -Zeromq is the current default transport within Salt +ZeroMQ is the current default transport within Salt .UNINDENT .UNINDENT .sp -Zeromq is a messaging library with bindings into many languages. Zeromq implements +ZeroMQ is a messaging library with bindings into many languages. ZeroMQ implements a socket interface for message passing, with specific semantics for the socket type. -.SS Pub Channel -.sp -The pub channel is implemented using zeromq\(aqs pub/sub sockets. By default we don\(aqt -use zeromq\(aqs filtering, which means that all publish jobs are sent to all minions -and filtered minion side. Zeromq does have publisher side filtering which can be -enabled in salt using \fBzmq_filtering\fP\&. -.SS Req Channel -.sp -The req channel is implemented using zeromq\(aqs req/rep sockets. These sockets -enforce a send/recv pattern, which forces salt to serialize messages through these -socket pairs. This means that although the interface is asynchronous on the minion -we cannot send a second message until we have received the reply of the first message. +.SS Publish Server and Client +.sp +The publish server and client are implemented using ZeroMQ\(aqs pub/sub sockets. By +default we don\(aqt use ZeroMQ\(aqs filtering, which means that all publish jobs are +sent to all minions and filtered minion side. ZeroMQ does have publisher side +filtering which can be enabled in salt using \fBzmq_filtering\fP\&. +.SS Request Server and Client +.sp +The request server and client are implemented using ZeroMQ\(aqs req/rep sockets. +These sockets enforce a send/recv pattern, which forces salt to serialize +messages through these socket pairs. This means that although the interface is +asynchronous on the minion we cannot send a second message until we have +received the reply of the first message. .SS TCP Transport .sp -The tcp transport is an implementation of Salt\(aqs channels using raw tcp sockets. +The tcp transport is an implementation of Salt\(aqs transport using raw tcp sockets. Since this isn\(aqt using a pre\-defined messaging library we will describe the wire protocol, message semantics, etc. in this document. .sp @@ -26786,10 +22683,10 @@ version of Python. .SS Crypto .sp The current implementation uses the same crypto as the \fBzeromq\fP transport. -.SS Pub Channel +.SS Publish Server and Client .sp -For the pub channel we send messages without "message ids" which the remote end -interprets as a one\-way send. +For the publish server and client we send messages without "message ids" which +the remote end interprets as a one\-way send. .sp \fBNOTE:\fP .INDENT 0.0 @@ -26797,10 +22694,10 @@ interprets as a one\-way send. As of today we send all publishes to all minions and rely on minion\-side filtering. .UNINDENT .UNINDENT -.SS Req Channel +.SS Request Server and Client .sp -For the req channel we send messages with a "message id". This "message id" allows -us to multiplex messages across the socket. +For the request server and client we send messages with a "message id". This +"message id" allows us to multiplex messages across the socket. .SS Master Tops System .sp In 0.10.4 the \fIexternal_nodes\fP system was upgraded to allow for modular @@ -28643,7 +24540,7 @@ Return data to an etcd server or cluster .B depends .INDENT 7.0 .IP \(bu 2 -python\-etcd +python\-etcd or etcd3\-py .UNINDENT .UNINDENT .sp @@ -28677,6 +24574,59 @@ etcd.port: 2379 .UNINDENT .UNINDENT .sp +In order to choose whether to use etcd API v2 or v3, you can put the following +configuration option in the same place as your etcd configuration. This option +defaults to true, meaning you will use v2 unless you specify otherwise. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.require_v2: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +When using API v3, there are some specific options available to be configured +within your etcd profile. They are defaulted to the following... +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.encode_keys: False +etcd.encode_values: True +etcd.raw_keys: False +etcd.raw_values: False +etcd.unicode_errors: "surrogateescape" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_keys\fP indicates whether you want to pre\-encode keys using msgpack before +adding them to etcd. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +If you set \fBetcd.encode_keys\fP to \fBTrue\fP, all recursive functionality will no longer work. +This includes \fBtree\fP and \fBls\fP and all other methods if you set \fBrecurse\fP/\fBrecursive\fP to \fBTrue\fP\&. +This is due to the fact that when encoding with msgpack, keys like \fB/salt\fP and \fB/salt/stack\fP will have +differing byte prefixes, and etcd v3 searches recursively using prefixes. +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_values\fP indicates whether you want to pre\-encode values using msgpack before +adding them to etcd. This defaults to \fBTrue\fP to avoid data loss on non\-string values wherever possible. +.sp +\fBetcd.raw_keys\fP determines whether you want the raw key or a string returned. +.sp +\fBetcd.raw_values\fP determines whether you want the raw value or a string returned. +.sp +\fBetcd.unicode_errors\fP determines what you policy to follow when there are encoding/decoding errors. +.sp Additionally, two more options must be specified in the top\-level configuration in order to use the etcd returner: .INDENT 0.0 @@ -32047,15 +27997,14 @@ Run a test by using \fBsalt\-call test.ping \-\-return splunk\fP Written by Scott Pack (github.com/scottjpack) .INDENT 0.0 .TP -.B class salt.returners.splunk.http_event_collector(token, http_event_server, host=\(aq\(aq, http_event_port=\(aq8088\(aq, http_event_server_ssl=True, max_bytes=100000, verify_ssl=True) -.INDENT 7.0 -.TP -.B batchEvent(payload, eventtime=\(aq\(aq) +.B salt.returners.splunk.event_return(events) +Return events to Splunk via the HTTP Event Collector. +Requires the Splunk HTTP Event Collector running on port 8088. +This is available on Splunk Enterprise version 6.3 or higher. .UNINDENT -.INDENT 7.0 +.INDENT 0.0 .TP -.B flushBatch() -.UNINDENT +.B class salt.returners.splunk.http_event_collector(token, http_event_server, host=\(aq\(aq, http_event_port=\(aq8088\(aq, http_event_server_ssl=True, max_bytes=100000, verify_ssl=True) .INDENT 7.0 .TP .B sendEvent(payload, eventtime=\(aq\(aq) @@ -32064,7 +28013,9 @@ Written by Scott Pack (github.com/scottjpack) .INDENT 0.0 .TP .B salt.returners.splunk.returner(ret) -Send a message to Splunk via the HTTP Event Collector +Send a message to Splunk via the HTTP Event Collector. +Requires the Splunk HTTP Event Collector running on port 8088. +This is available on Splunk Enterprise version 6.3 or higher. .UNINDENT .SS salt.returners.sqlite3 .sp @@ -32628,7 +28579,7 @@ The default renderer is set in the master/minion configuration file using the .SS Two Kinds of Renderers .sp Renderers fall into one of two categories, based on what they output: text or -data. The one exception to this would be the \fBpure python\fP renderer, which can be used in either capacity. +data. Some exceptions to this would be the \fBpure python\fP and \fBgpg\fP renderers which could be used in either capacity. .SS Text Renderers .sp \fBIMPORTANT:\fP @@ -32690,6 +28641,8 @@ following are all data renderers: \fByamlex\fP .IP \(bu 2 \fByaml\fP +.IP \(bu 2 +\fBgpg\fP .UNINDENT .SS Overriding the Default Renderer .sp @@ -33530,6 +29483,19 @@ salt myminion state.sls secretstuff pillar_enc=gpg pillar="$ciphertext" .fi .UNINDENT .UNINDENT +.SS Configuration +.sp +The default behaviour of this renderer is to log a warning if a block could not +be decrypted; in other words, it just returns the ciphertext rather than the +encrypted secret. +.sp +This behaviour can be changed via the \fIgpg_decrypt_must_succeed\fP configuration +option. If set to \fITrue\fP, any gpg block that cannot be decrypted raises a +\fISaltRenderError\fP exception, which registers an error in \fB_errors\fP during +rendering. +.sp +In the Chlorine release, the default behavior will be reversed and an error +message will be added to \fB_errors\fP by default. .INDENT 0.0 .TP .B salt.renderers.gpg.render(gpg_data, saltenv=\(aqbase\(aq, sls=\(aq\(aq, argline=\(aq\(aq, **kwargs) @@ -33847,6 +29813,68 @@ unique = [\(aqfoo\(aq, \(aqbar\(aq] .fi .UNINDENT .UNINDENT +.sp +** Salt State Parameter Format Filters ** +.sp +New in version 3005. + +.sp +Renders a formatted multi\-line YAML string from a Python dictionary. Each +key/value pair in the dictionary will be added as a single\-key dictionary +to a list that will then be sent to the YAML formatter. +.sp +For example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% set thing_params = { + "name": "thing", + "changes": True, + "warnings": "OMG! Stuff is happening!" + } +%} + +thing: + test.configurable_test_state: + {{ thing_params | dict_to_sls_yaml_params | indent }} +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +will be rendered as: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +\&.. code\-block:: yaml +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 7.0 +.INDENT 3.5 +.INDENT 0.0 +.TP +.B thing: +.INDENT 7.0 +.TP +.B test.configurable_test_state: +.INDENT 7.0 +.IP \(bu 2 +name: thing +.IP \(bu 2 +changes: true +.IP \(bu 2 +warnings: OMG! Stuff is happening! +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT .UNINDENT .SS salt.renderers.json .sp @@ -36251,6 +32279,44 @@ ext_pillar: .sp New in version 2017.7.5,2018.3.1. +.sp +Taking it one step further, \fB__env__\fP can also be used in the \fBpillar_root\fP +filesystem path. It will be replaced with the actual \fBpillarenv\fP and searched +for Pillar data to provide to the minion. Note this substitution ONLY occurs for +the \fB__env__\fP environment. For instance, this configuration: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +pillar_roots: + __env__: + \- /srv/__env__/pillar +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +is equivalent to this static configuration: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +pillar_roots: + dev: + \- /srv/dev/pillar + test: + \- /srv/test/pillar + prod: + \- /srv/prod/pillar +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +New in version 3005. + .SS Pillar Namespace Flattening .sp The separate pillar SLS files all merge down into a single dictionary of @@ -36473,6 +32539,25 @@ pillar data is modified, and then states are run, the states will see the updated pillar data, but \fBpillar.item\fP, \fBpillar.get\fP, and \fBpillar.raw\fP will not see this data unless refreshed using \fBsaltutil.refresh_pillar\fP\&. +.sp +If you are using the Pillar Cache and have set \fBpillar_cache\fP to \fITrue\fP, +the pillar cache can be updated either when you run \fBsaltutil.refresh_pillar\fP, or using the pillar runner function +\fBpillar.clear_pillar_cache\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-run pillar.clear_pillar_cache \(aqminion\(aq +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The pillar will not be updated when running \fBpillar.items\fP or a state for example. If you are +using a Salt version before 3003, you would need to manually delete the cache +file, located in Salt\(aqs master cache. For example, on linux the file would be +in this directory: /var/cache/salt/master/pillar_cache/ .SS How Pillar Environments Are Handled .sp When multiple pillar environments are used, the default behavior is for the @@ -39829,6 +35914,51 @@ Similar to the \fByaml_dquote\fP filter but with single quotes. Note that YAML only allows special escapes inside double quotes so \fByaml_squote\fP is not nearly as useful (viz. you likely want to use \fByaml_encode\fP or \fByaml_dquote\fP). +.SS \fBdict_to_sls_yaml_params\fP +.sp +New in version 3005. + +.sp +Renders a formatted multi\-line YAML string from a Python dictionary. Each +key/value pair in the dictionary will be added as a single\-key dictionary +to a list that will then be sent to the YAML formatter. +.sp +Example: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% set thing_params = { + "name": "thing", + "changes": True, + "warnings": "OMG! Stuff is happening!" + } +%} + +thing: + test.configurable_test_state: + {{ thing_params | dict_to_sls_yaml_params | indent }} +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Returns: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +thing: + test.configurable_test_state: + \- name: thing + \- changes: true + \- warnings: OMG! Stuff is happening! +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBto_bool\fP .sp New in version 2017.7.0. @@ -40324,6 +36454,187 @@ Returns: .fi .UNINDENT .UNINDENT +.SS \fBflatten\fP +.sp +New in version 3005. + +.sp +Flatten a list. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{{ [3, [4, 2] ] | flatten }} +# => [3, 4, 2] +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Flatten only the first level of a list: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{{ [3, [4, [2]] ] | flatten(levels=1) }} +# => [3, 4, [2]] +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Preserve nulls in a list, by default \fBflatten\fP removes them. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{{ [3, None, [4, [2]] ] | flatten(levels=1, preserve_nulls=True) }} +# => [3, None, 4, [2]] +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBcombinations\fP +.sp +New in version 3005. + +.sp +Invokes the \fBcombinations\fP function from the \fBitertools\fP library. +.sp +See the \fI\%itertools documentation\fP for more information. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% for one, two in "ABCD" | combinations(2) %}{{ one~two }} {% endfor %} +# => AB AC AD BC BD CD +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBcombinations_with_replacement\fP +.sp +New in version 3005. + +.sp +Invokes the \fBcombinations_with_replacement\fP function from the \fBitertools\fP library. +.sp +See the \fI\%itertools documentation\fP for more information. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% for one, two in "ABC" | combinations_with_replacement(2) %}{{ one~two }} {% endfor %} +# => AA AB AC BB BC CC +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBcompress\fP +.sp +New in version 3005. + +.sp +Invokes the \fBcompress\fP function from the \fBitertools\fP library. +.sp +See the \fI\%itertools documentation\fP for more information. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% for val in "ABCDEF" | compress([1,0,1,0,1,1]) %}{{ val }} {% endfor %} +# => A C E F +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBpermutations\fP +.sp +New in version 3005. + +.sp +Invokes the \fBpermutations\fP function from the \fBitertools\fP library. +.sp +See the \fI\%itertools documentation\fP for more information. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% for one, two in "ABCD" | permutations(2) %}{{ one~two }} {% endfor %} +# => AB AC AD BA BC BD CA CB CD DA DB DC +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBproduct\fP +.sp +New in version 3005. + +.sp +Invokes the \fBproduct\fP function from the \fBitertools\fP library. +.sp +See the \fI\%itertools documentation\fP for more information. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% for one, two in "ABCD" | product("xy") %}{{ one~two }} {% endfor %} +# => Ax Ay Bx By Cx Cy Dx Dy +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBzip\fP +.sp +New in version 3005. + +.sp +Invokes the native Python \fBzip\fP function. +.sp +The \fBzip\fP function returns a zip object, which is an iterator of tuples where +the first item in each passed iterator is paired together, and then the second +item in each passed iterator are paired together etc. +.sp +If the passed iterators have different lengths, the iterator with the least +items decides the length of the new iterator. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% for one, two in "ABCD" | zip("xy") %}{{ one~two }} {% endfor %} +# => Ax By +.ft P +.fi +.UNINDENT +.UNINDENT +.SS \fBzip_longest\fP +.sp +New in version 3005. + +.sp +Invokes the \fBzip_longest\fP function from the \fBitertools\fP library. +.sp +See the \fI\%itertools documentation\fP for more information. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{% for one, two in "ABCD" | zip_longest("xy", fillvalue="\-") %}{{ one~two }} {% endfor %} +# => Ax By C\- D\- +.ft P +.fi +.UNINDENT +.UNINDENT .SS \fBmethod_call\fP .sp New in version 3001. @@ -41454,6 +37765,41 @@ Example 2: SnakeCaseForTheWin .fi .UNINDENT .UNINDENT +.SS \fBhuman_to_bytes\fP +.sp +New in version 3005. + +.sp +Given a human\-readable byte string (e.g. 2G, 30MB, 64KiB), return the number of bytes. +Will return 0 if the argument has unexpected form. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +Example 1: {{ "32GB" | human_to_bytes }} + +Example 2: {{ "32GB" | human_to_bytes(handle_metric=True) }} + +Example 3: {{ "32" | human_to_bytes(default_unit="GiB") }} +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Returns: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +Example 1: 34359738368 +Example 2: 32000000000 +Example 3: 34359738368 +.ft P +.fi +.UNINDENT +.UNINDENT .SS Networking Filters .sp The following networking\-related filters are supported: @@ -43167,8 +39513,8 @@ pip install docker\-py .SS Step 2 \- Install Salt .sp For this tutorial we will be using Salt Call, which is available in the -\fIsalt\-minion\fP package, please follow the Salt Installation docs found here: -\fI\%https://repo.saltproject.io/\fP +\fIsalt\-minion\fP package, please follow the +\fI\%Salt install guide\fP\&. .SS Step 3 \- Create With Salt States .sp Next some Salt States are needed, for this example a very basic state which @@ -43932,6 +40278,309 @@ Salt Proxy Minion End\-to\-End Example .IP \(bu 2 \fBvSphere Execution Module\fP .UNINDENT +.SS Opening the Firewall up for Salt +.sp +The Salt master communicates with the minions using an AES\-encrypted ZeroMQ +connection. These communications are done over TCP ports \fB4505\fP and \fB4506\fP, +which need to be accessible on the master only. This document outlines suggested +firewall rules for allowing these incoming connections to the master. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +No firewall configuration needs to be done on Salt minions. These changes +refer to the master only. +.UNINDENT +.UNINDENT +.SS Fedora 18 and beyond / RHEL 7 / CentOS 7 +.sp +Starting with Fedora 18 \fI\%FirewallD\fP is the tool that is used to dynamically +manage the firewall rules on a host. It has support for IPv4/6 settings and +the separation of runtime and permanent configurations. To interact with +FirewallD use the command line client \fBfirewall\-cmd\fP\&. +.sp +\fBfirewall\-cmd example\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +firewall\-cmd \-\-permanent \-\-zone= \-\-add\-port=4505\-4506/tcp +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +A network zone defines the security level of trust for the network. +The user should choose an appropriate zone value for their setup. +Possible values include: drop, block, public, external, dmz, work, home, internal, trusted. +.sp +Don\(aqt forget to reload after you made your changes. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +firewall\-cmd \-\-reload +.ft P +.fi +.UNINDENT +.UNINDENT +.SS RHEL 6 / CentOS 6 +.sp +The \fBlokkit\fP command packaged with some Linux distributions makes opening +iptables firewall ports very simple via the command line. Just be careful +to not lock out access to the server by neglecting to open the ssh port. +.sp +\fBlokkit example\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +lokkit \-p 22:tcp \-p 4505:tcp \-p 4506:tcp +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The \fBsystem\-config\-firewall\-tui\fP command provides a text\-based interface to +modifying the firewall. +.sp +\fBsystem\-config\-firewall\-tui\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +system\-config\-firewall\-tui +.ft P +.fi +.UNINDENT +.UNINDENT +.SS openSUSE +.sp +Salt installs firewall rules in \fI\%/etc/sysconfig/SuSEfirewall2.d/services/salt\fP\&. +Enable with: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +SuSEfirewall2 open +SuSEfirewall2 start +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +If you have an older package of Salt where the above configuration file is +not included, the \fBSuSEfirewall2\fP command makes opening iptables firewall +ports very simple via the command line. +.sp +\fBSuSEfirewall example\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +SuSEfirewall2 open EXT TCP 4505 +SuSEfirewall2 open EXT TCP 4506 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The firewall module in YaST2 provides a text\-based interface to modifying the +firewall. +.sp +\fBYaST2\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +yast2 firewall +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Windows +.sp +Windows Firewall is the default component of Microsoft Windows that provides +firewalling and packet filtering. There are many 3rd party firewalls available +for Windows, some of which use rules from the Windows Firewall. If you are +experiencing problems see the vendor\(aqs specific documentation for opening the +required ports. +.sp +The Windows Firewall can be configured using the Windows Interface or from the +command line. +.sp +\fBWindows Firewall (interface)\fP: +.INDENT 0.0 +.IP 1. 3 +Open the Windows Firewall Interface by typing \fBwf.msc\fP at the command +prompt or in a run dialog (\fIWindows Key + R\fP) +.IP 2. 3 +Navigate to \fBInbound Rules\fP in the console tree +.IP 3. 3 +Add a new rule by clicking \fBNew Rule...\fP in the Actions area +.IP 4. 3 +Change the Rule Type to \fBPort\fP\&. Click \fBNext\fP +.IP 5. 3 +Set the Protocol to \fBTCP\fP and specify local ports \fB4505\-4506\fP\&. Click +\fBNext\fP +.IP 6. 3 +Set the Action to \fBAllow the connection\fP\&. Click \fBNext\fP +.IP 7. 3 +Apply the rule to \fBDomain\fP, \fBPrivate\fP, and \fBPublic\fP\&. Click \fBNext\fP +.IP 8. 3 +Give the new rule a Name, ie: \fBSalt\fP\&. You may also add a description. Click +\fBFinish\fP +.UNINDENT +.sp +\fBWindows Firewall (command line)\fP: +.sp +The Windows Firewall rule can be created by issuing a single command. Run the +following command from the command line or a run prompt: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +netsh advfirewall firewall add rule name="Salt" dir=in action=allow protocol=TCP localport=4505\-4506 +.ft P +.fi +.UNINDENT +.UNINDENT +.SS iptables +.sp +Different Linux distributions store their \fIiptables\fP (also known as +\fI\%netfilter\fP) rules in different places, which makes it difficult to +standardize firewall documentation. Included are some of the more +common locations, but your mileage may vary. +.sp +\fBFedora / RHEL / CentOS\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +/etc/sysconfig/iptables +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBArch Linux\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +/etc/iptables/iptables.rules +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBDebian\fP +.sp +Follow these instructions: \fI\%https://wiki.debian.org/iptables\fP +.sp +Once you\(aqve found your firewall rules, you\(aqll need to add the below line +to allow traffic on \fBtcp/4505\fP and \fBtcp/4506\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +\-A INPUT \-m state \-\-state new \-m tcp \-p tcp \-\-dport 4505:4506 \-j ACCEPT +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBUbuntu\fP +.sp +Salt installs firewall rules in \fI\%/etc/ufw/applications.d/salt.ufw\fP\&. Enable with: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +ufw allow salt +.ft P +.fi +.UNINDENT +.UNINDENT +.SS pf.conf +.sp +The BSD\-family of operating systems uses \fI\%packet filter (pf)\fP\&. The following +example describes the addition to \fBpf.conf\fP needed to access the Salt +master. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +pass in on $int_if proto tcp from any to $int_if port 4505:4506 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Once this addition has been made to the \fBpf.conf\fP the rules will need to +be reloaded. This can be done using the \fBpfctl\fP command. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +pfctl \-vf /etc/pf.conf +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Whitelist communication to Master +.sp +There are situations where you want to selectively allow Minion traffic +from specific hosts or networks into your Salt Master. The first +scenario which comes to mind is to prevent unwanted traffic to your +Master out of security concerns, but another scenario is to handle +Minion upgrades when there are backwards incompatible changes between +the installed Salt versions in your environment. +.sp +Here is an example \fI\%Linux iptables\fP ruleset to +be set on the Master: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +# Allow Minions from these networks +\-I INPUT \-s 10.1.2.0/24 \-p tcp \-\-dports 4505:4506 \-j ACCEPT +\-I INPUT \-s 10.1.3.0/24 \-p tcp \-\-dports 4505:4506 \-j ACCEPT +# Allow Salt to communicate with Master on the loopback interface +\-A INPUT \-i lo \-p tcp \-\-dports 4505:4506 \-j ACCEPT +# Reject everything else +\-A INPUT \-p tcp \-\-dports 4505:4506 \-j REJECT +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +The important thing to note here is that the \fBsalt\fP command +needs to communicate with the listening network socket of +\fBsalt\-master\fP on the \fIloopback\fP interface. Without this you will +see no outgoing Salt traffic from the master, even for a simple +\fBsalt \(aq*\(aq test.version\fP, because the \fBsalt\fP client never reached +the \fBsalt\-master\fP to tell it to carry out the execution. +.UNINDENT +.UNINDENT .SS HTTP Modules .sp This tutorial demonstrates using the various HTTP modules available in Salt. @@ -44613,8 +41262,8 @@ expects it. This data will always include \fBtext\fP and \fBstatus\fP\&. Optiona The focus of this tutorial will be building a Salt infrastructure for handling large numbers of minions. This will include tuning, topology, and best practices. .sp -For how to install the Salt Master please -go here: \fI\%Installing saltstack\fP +For how to install the Salt Master, see the +\fI\%Salt install guide\fP\&. .sp \fBNOTE:\fP .INDENT 0.0 @@ -47431,6 +44080,576 @@ def roster_dirs(): .fi .UNINDENT .UNINDENT +.SS Preseed Minion with Accepted Key +.sp +In some situations, it is not convenient to wait for a minion to start before +accepting its key on the master. For instance, you may want the minion to +bootstrap itself as soon as it comes online. You may also want to let your +developers provision new development machines on the fly. +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +Many ways to preseed minion keys +.sp +Salt has other ways to generate and pre\-accept minion keys in addition to +the manual steps outlined below. +.sp +salt\-cloud performs these same steps automatically when new cloud VMs are +created (unless instructed not to). +.sp +salt\-api exposes an HTTP call to Salt\(aqs REST API to \fBgenerate and +download the new minion keys as a tarball\fP\&. +.UNINDENT +.UNINDENT +.sp +There is a general four step process to do this: +.INDENT 0.0 +.IP 1. 3 +Generate the keys on the master: +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +root@saltmaster# salt\-key \-\-gen\-keys=[key_name] +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Pick a name for the key, such as the minion\(aqs id. +.INDENT 0.0 +.IP 2. 3 +Add the public key to the accepted minion folder: +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +root@saltmaster# cp key_name.pub /etc/salt/pki/master/minions/[minion_id] +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +It is necessary that the public key file has the same name as your minion id. +This is how Salt matches minions with their keys. Also note that the pki folder +could be in a different location, depending on your OS or if specified in the +master config file. +.INDENT 0.0 +.IP 3. 3 +Distribute the minion keys. +.UNINDENT +.sp +There is no single method to get the keypair to your minion. The difficulty is +finding a distribution method which is secure. For Amazon EC2 only, an AWS best +practice is to use IAM Roles to pass credentials. (See blog post, +\fI\%https://aws.amazon.com/blogs/security/using\-iam\-roles\-to\-distribute\-non\-aws\-credentials\-to\-your\-ec2\-instances/\fP ) +.INDENT 0.0 +.INDENT 3.5 +.IP "Security Warning" +.sp +Since the minion key is already accepted on the master, distributing +the private key poses a potential security risk. A malicious party +will have access to your entire state tree and other sensitive data if they +gain access to a preseeded minion key. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 4. 3 +Preseed the Minion with the keys +.UNINDENT +.sp +You will want to place the minion keys before starting the salt\-minion daemon: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +/etc/salt/pki/minion/minion.pem +/etc/salt/pki/minion/minion.pub +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Once in place, you should be able to start salt\-minion and run \fBsalt\-call +state.apply\fP or any other salt commands that require master authentication. +.SS Salt Masterless Quickstart +.sp +Running a masterless salt\-minion lets you use Salt\(aqs configuration management +for a single machine without calling out to a Salt master on another machine. +.sp +Since the Salt minion contains such extensive functionality it can be useful +to run it standalone. A standalone minion can be used to do a number of +things: +.INDENT 0.0 +.IP \(bu 2 +Stand up a master server via States (Salting a Salt Master) +.IP \(bu 2 +Use salt\-call commands on a system without connectivity to a master +.IP \(bu 2 +Masterless States, run states entirely from files local to the minion +.UNINDENT +.sp +It is also useful for testing out state trees before deploying to a production setup. +.SS Bootstrap Salt Minion +.sp +The \fI\%salt\-bootstrap\fP script makes bootstrapping a server with Salt simple +for any OS with a Bourne shell: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +curl \-L https://bootstrap.saltstack.com \-o bootstrap_salt.sh +sudo sh bootstrap_salt.sh +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +See the \fI\%salt\-bootstrap\fP documentation for other one liners. When using \fI\%Vagrant\fP +to test out salt, the \fI\%Vagrant salt provisioner\fP will provision the VM for you. +.SS Telling Salt to Run Masterless +.sp +To instruct the minion to not look for a master, the \fBfile_client\fP +configuration option needs to be set in the minion configuration file. +By default the \fBfile_client\fP is set to \fBremote\fP so that the +minion gathers file server and pillar data from the salt master. +When setting the \fBfile_client\fP option to \fBlocal\fP the +minion is configured to not gather this data from the master. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +file_client: local +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Now the salt minion will not look for a master and will assume that the local +system has all of the file and pillar resources. +.sp +Configuration which resided in the +master configuration (e.g. \fB/etc/salt/master\fP) +should be moved to the minion configuration +since the minion does not read the master configuration. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +When running Salt in masterless mode, do not run the salt\-minion daemon. +Otherwise, it will attempt to connect to a master and fail. The salt\-call +command stands on its own and does not need the salt\-minion daemon. +.UNINDENT +.UNINDENT +.SS Create State Tree +.sp +Following the successful installation of a salt\-minion, the next step is to create +a state tree, which is where the SLS files that comprise the possible states of the +minion are stored. +.sp +The following example walks through the steps necessary to create a state tree that +ensures that the server has the Apache webserver installed. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +For a complete explanation on Salt States, see the \fI\%tutorial\fP\&. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 1. 3 +Create the \fBtop.sls\fP file: +.UNINDENT +.sp +\fB/srv/salt/top.sls:\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +base: + \(aq*\(aq: + \- webserver +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 2. 3 +Create the webserver state tree: +.UNINDENT +.sp +\fB/srv/salt/webserver.sls:\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +apache: # ID declaration + pkg: # state declaration + \- installed # function declaration +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +The apache package has different names on different platforms, for +instance on Debian/Ubuntu it is apache2, on Fedora/RHEL it is httpd +and on Arch it is apache +.UNINDENT +.UNINDENT +.sp +The only thing left is to provision our minion using \fBsalt\-call\fP\&. +.SS Salt\-call +.sp +The salt\-call command is used to run remote execution functions locally on a +minion instead of executing them from the master. Normally the salt\-call +command checks into the master to retrieve file server and pillar data, but +when running standalone salt\-call needs to be instructed to not check the +master for this data: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-call \-\-local state.apply +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The \fB\-\-local\fP flag tells the salt\-minion to look for the state tree in the +local file system and not to contact a Salt Master for instructions. +.sp +To provide verbose output, use \fB\-l debug\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-call \-\-local state.apply \-l debug +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The minion first examines the \fBtop.sls\fP file and determines that it is a part +of the group matched by \fB*\fP glob and that the \fBwebserver\fP SLS should be applied. +.sp +It then examines the \fBwebserver.sls\fP file and finds the \fBapache\fP state, which +installs the Apache package. +.sp +The minion should now have Apache installed, and the next step is to begin +learning how to write more complex states\&. +.SS running salt as normal user tutorial +.sp +\fBBefore continuing\fP make sure you have a working Salt installation by +following the installation and the +configuration instructions. +.INDENT 0.0 +.INDENT 3.5 +.IP "Stuck?" +.sp +There are many ways to salt\-community including our +\fI\%mailing list\fP +and our \fI\%IRC channel\fP #salt. +.UNINDENT +.UNINDENT +.SS Running Salt functions as non root user +.sp +If you don\(aqt want to run salt cloud as root or even install it you can +configure it to have a virtual root in your working directory. +.sp +The salt system uses the \fBsalt.syspath\fP module to find the variables +.sp +If you run the salt\-build, it will generated in: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +\&./build/lib.linux\-x86_64\-2.7/salt/_syspaths.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +To generate it, run the command: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +python setup.py build +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Copy the generated module into your salt directory +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +cp ./build/lib.linux\-x86_64\-2.7/salt/_syspaths.py salt/_syspaths.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Edit it to include needed variables and your new paths +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +# you need to edit this +_your_current_dir_ = ... +ROOT_DIR = _your_current_dir_ + "/salt/root" + +# you need to edit this +_location_of_source_code_ = ... +INSTALL_DIR = _location_of_source_code_ + +CONFIG_DIR = ROOT_DIR + "/etc/salt" +CACHE_DIR = ROOT_DIR + "/var/cache/salt" +SOCK_DIR = ROOT_DIR + "/var/run/salt" +SRV_ROOT_DIR = ROOT_DIR + "/srv" +BASE_FILE_ROOTS_DIR = ROOT_DIR + "/srv/salt" +BASE_PILLAR_ROOTS_DIR = ROOT_DIR + "/srv/pillar" +BASE_MASTER_ROOTS_DIR = ROOT_DIR + "/srv/salt\-master" +LOGS_DIR = ROOT_DIR + "/var/log/salt" +PIDFILE_DIR = ROOT_DIR + "/var/run" +CLOUD_DIR = INSTALL_DIR + "/cloud" +BOOTSTRAP = CLOUD_DIR + "/deploy/bootstrap\-salt.sh" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Create the directory structure +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +mkdir \-p root/etc/salt root/var/cache/run root/run/salt root/srv +root/srv/salt root/srv/pillar root/srv/salt\-master root/var/log/salt root/var/run +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Populate the configuration files: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +cp \-r conf/* root/etc/salt/ +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Edit your \fBroot/etc/salt/master\fP configuration that is used by salt\-cloud: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +user: *your user name* +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Run like this: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +PYTHONPATH=\(gapwd\(ga scripts/salt\-cloud +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Salt Bootstrap +.sp +The Salt Bootstrap Script allows a user to install the Salt Minion or Master +on a variety of system distributions and versions. +.sp +The Salt Bootstrap Script is a shell script is known as \fBbootstrap\-salt.sh\fP\&. +It runs through a series of checks to determine the operating system type and +version. It then installs the Salt binaries using the appropriate methods. +.sp +The Salt Bootstrap Script installs the minimum number of packages required to +run Salt. This means that in the event you run the bootstrap to install via +package, Git will not be installed. Installing the minimum number of packages +helps ensure the script stays as lightweight as possible, assuming the user +will install any other required packages after the Salt binaries are present +on the system. +.sp +The Salt Bootstrap Script is maintained in a separate repo from Salt, complete +with its own issues, pull requests, contributing guidelines, release protocol, +etc. +.sp +To learn more, please see the Salt Bootstrap repo links: +.INDENT 0.0 +.IP \(bu 2 +\fI\%Salt Bootstrap repo\fP +.IP \(bu 2 +\fI\%README\fP: includes supported operating systems, example usage, and more. +.IP \(bu 2 +\fI\%Contributing Guidelines\fP +.IP \(bu 2 +\fI\%Release Process\fP +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +The Salt Bootstrap script can be found in the Salt repo under the +\fBsalt/cloud/deploy/bootstrap\-salt.sh\fP path. Any changes to this file +will be overwritten! Bug fixes and feature additions must be submitted +via the \fI\%Salt Bootstrap repo\fP\&. Please see the Salt Bootstrap Script\(aqs +\fI\%Release Process\fP for more information. +.UNINDENT +.UNINDENT +.SS Standalone Minion +.sp +Since the Salt minion contains such extensive functionality it can be useful +to run it standalone. A standalone minion can be used to do a number of +things: +.INDENT 0.0 +.IP \(bu 2 +Use salt\-call commands on a system without connectivity to a master +.IP \(bu 2 +Masterless States, run states entirely from files local to the minion +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +When running Salt in masterless mode, it is not required to run the +salt\-minion daemon. By default the salt\-minion daemon will attempt to +connect to a master and fail. The salt\-call command stands on its own +and does not need the salt\-minion daemon. +.sp +As of version 2016.11.0 you can have a running minion (with engines and +beacons) without a master connection. If you wish to run the salt\-minion +daemon you will need to set the \fBmaster_type\fP configuration +setting to be set to \(aqdisable\(aq. +.UNINDENT +.UNINDENT +.SS Minion Configuration +.sp +Throughout this document there are several references to setting different +options to configure a masterless Minion. Salt Minions are easy to configure +via a configuration file that is located, by default, in \fB/etc/salt/minion\fP\&. +Note, however, that on FreeBSD systems, the minion configuration file is located +in \fB/usr/local/etc/salt/minion\fP\&. +.sp +You can learn more about minion configuration options in the +Configuring the Salt Minion docs. +.SS Telling Salt Call to Run Masterless +.sp +The salt\-call command is used to run module functions locally on a minion +instead of executing them from the master. Normally the salt\-call command +checks into the master to retrieve file server and pillar data, but when +running standalone salt\-call needs to be instructed to not check the master for +this data. To instruct the minion to not look for a master when running +salt\-call the \fBfile_client\fP configuration option needs to be set. +By default the \fBfile_client\fP is set to \fBremote\fP so that the +minion knows that file server and pillar data are to be gathered from the +master. When setting the \fBfile_client\fP option to \fBlocal\fP the +minion is configured to not gather this data from the master. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +file_client: local +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Now the salt\-call command will not look for a master and will assume that the +local system has all of the file and pillar resources. +.SS Running States Masterless +.sp +The state system can be easily run without a Salt master, with all needed files +local to the minion. To do this the minion configuration file needs to be set +up to know how to return file_roots information like the master. The file_roots +setting defaults to /srv/salt for the base environment just like on the master: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +file_roots: + base: + \- /srv/salt +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Now set up the Salt State Tree, top file, and SLS modules in the same way that +they would be set up on a master. Now, with the \fBfile_client\fP +option set to \fBlocal\fP and an available state tree then calls to functions in +the state module will use the information in the file_roots on the minion +instead of checking in with the master. +.sp +Remember that when creating a state tree on a minion there are no syntax or +path changes needed, SLS modules written to be used from a master do not need +to be modified in any way to work with a minion. +.sp +This makes it easy to "script" deployments with Salt states without having to +set up a master, and allows for these SLS modules to be easily moved into a +Salt master as the deployment grows. +.sp +The declared state can now be executed with: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-call state.apply +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Or the salt\-call command can be executed with the \fB\-\-local\fP flag, this makes +it unnecessary to change the configuration file: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-call state.apply \-\-local +.ft P +.fi +.UNINDENT +.UNINDENT +.SS External Pillars +.sp +External pillars are supported when running in masterless mode. .SS How Do I Use Salt States? .sp Simplicity, Simplicity, Simplicity @@ -48298,9 +45517,11 @@ The \fB\&.sls\fP is discarded (i.e. \fBwebserver.sls\fP becomes .B Subdirectories can be used for better organization. .INDENT 7.0 .IP a. 3 -Each subdirectory is represented with a dot (following the Python -import model) in Salt states and on the command line . \fBwebserver/dev.sls\fP -on the filesystem is referred to as \fBwebserver.dev\fP in Salt +Each subdirectory under the configured file_roots (default: +\fB/srv/salt/\fP) is represented with a dot (following the Python +import model) in Salt states and on the command line. +\fBwebserver/dev.sls\fP on the filesystem is referred to as +\fBwebserver.dev\fP in Salt .IP b. 3 Because slashes are represented as dots, SLS files can not contain dots in the name (other than the dot for the SLS suffix). The SLS @@ -49779,8 +47000,8 @@ configuration management system called \fBSalt States\fP\&. .SS Installing Salt .sp SaltStack has been made to be very easy to install and get started. The -installation documents contain instructions -for all supported platforms. +\fI\%Salt install guide\fP +provides instructions for all supported platforms. .SS Starting Salt .sp Salt functions on a master/minion topology. A master server acts as a @@ -50570,6 +47791,647 @@ This still is only scratching the surface, many components such as the reactor and event systems, extending Salt, modular components and more are not covered here. For an overview of all Salt features and documentation, look at the Table of Contents\&. +.SS The macOS (Maverick) Developer Step By Step Guide To Salt Installation +.sp +This document provides a step\-by\-step guide to installing a Salt cluster +consisting of one master, and one minion running on a local VM hosted on macOS. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This guide is aimed at developers who wish to run Salt in a virtual machine. +The official (Linux) walkthrough can be found +\fI\%here\fP\&. +.UNINDENT +.UNINDENT +.SS The 5 Cent Salt Intro +.sp +Since you\(aqre here you\(aqve probably already heard about Salt, so you already +know Salt lets you configure and run commands on hordes of servers easily. +Here\(aqs a brief overview of a Salt cluster: +.INDENT 0.0 +.IP \(bu 2 +Salt works by having a "master" server sending commands to one or multiple +"minion" servers. The master server is the "command center". It is +going to be the place where you store your configuration files, aka: "which +server is the db, which is the web server, and what libraries and software +they should have installed". The minions receive orders from the master. +Minions are the servers actually performing work for your business. +.IP \(bu 2 +Salt has two types of configuration files: +.sp +1. the "salt communication channels" or "meta" or "config" configuration +files (not official names): one for the master (usually is /etc/salt/master +, \fBon the master server\fP), and one for minions (default is +/etc/salt/minion or /etc/salt/minion.conf, \fBon the minion servers\fP). Those +files are used to determine things like the Salt Master IP, port, Salt +folder locations, etc.. If these are configured incorrectly, your minions +will probably be unable to receive orders from the master, or the master +will not know which software a given minion should install. +.sp +2. the "business" or "service" configuration files (once again, not an +official name): these are configuration files, ending with ".sls" extension, +that describe which software should run on which server, along with +particular configuration properties for the software that is being +installed. These files should be created in the /srv/salt folder by default, +but their location can be changed using ... /etc/salt/master configuration file! +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This tutorial contains a third important configuration file, not to +be confused with the previous two: the virtual machine provisioning +configuration file. This in itself is not specifically tied to Salt, but +it also contains some Salt configuration. More on that in step 3. Also +note that all configuration files are YAML files. So indentation matters. +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +Salt also works with "masterless" configuration where a minion is +autonomous (in which case salt can be seen as a local configuration tool), +or in "multiple master" configuration. See the documentation for more on +that. +.UNINDENT +.UNINDENT +.SS Before Digging In, The Architecture Of The Salt Cluster +.SS Salt Master +.sp +The "Salt master" server is going to be the Mac OS machine, directly. Commands +will be run from a terminal app, so Salt will need to be installed on the Mac. +This is going to be more convenient for toying around with configuration files. +.SS Salt Minion +.sp +We\(aqll only have one "Salt minion" server. It is going to be running on a +Virtual Machine running on the Mac, using VirtualBox. It will run an Ubuntu +distribution. +.SS Step 1 \- Configuring The Salt Master On Your Mac +.sp +See the \fI\%Salt install guide\fP +for macOS installation instructions. +.sp +Because Salt has a lot of dependencies that are not built in macOS, we will use +Homebrew to install Salt. Homebrew is a package manager for Mac, it\(aqs great, use +it (for this tutorial at least!). Some people spend a lot of time installing +libs by hand to better understand dependencies, and then realize how useful a +package manager is once they\(aqre configuring a brand new machine and have to do +it all over again. It also lets you \fIuninstall\fP things easily. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +Brew is a Ruby program (Ruby is installed by default with your Mac). Brew +downloads, compiles, and links software. The linking phase is when compiled +software is deployed on your machine. It may conflict with manually +installed software, especially in the /usr/local directory. It\(aqs ok, +remove the manually installed version then refresh the link by typing +\fBbrew link \(aqpackageName\(aq\fP\&. Brew has a \fBbrew doctor\fP command that can +help you troubleshoot. It\(aqs a great command, use it often. Brew requires +xcode command line tools. When you run brew the first time it asks you to +install them if they\(aqre not already on your system. Brew installs +software in /usr/local/bin (system bins are in /usr/bin). In order to use +those bins you need your $PATH to search there first. Brew tells you if +your $PATH needs to be fixed. +.UNINDENT +.UNINDENT +.sp +\fBTIP:\fP +.INDENT 0.0 +.INDENT 3.5 +Use the keyboard shortcut \fBcmd + shift + period\fP in the "open" macOS +dialog box to display hidden files and folders, such as .profile. +.UNINDENT +.UNINDENT +.SS Install Homebrew +.sp +Install Homebrew here \fI\%https://brew.sh/\fP +.sp +Or just type +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +ruby \-e "$(curl \-fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Now type the following commands in your terminal (you may want to type \fBbrew +doctor\fP after each to make sure everything\(aqs fine): +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +brew install python +brew install swig +brew install zmq +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +zmq is ZeroMQ. It\(aqs a fantastic library used for server to server network +communication and is at the core of Salt efficiency. +.UNINDENT +.UNINDENT +.SS Install Salt +.sp +You should now have everything ready to launch this command: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +pip install salt +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +There should be no need for \fBsudo pip install salt\fP\&. Brew installed +Python for your user, so you should have all the access. In case you +would like to check, type \fBwhich python\fP to ensure that it\(aqs +/usr/local/bin/python, and \fBwhich pip\fP which should be +/usr/local/bin/pip. +.UNINDENT +.UNINDENT +.sp +Now type \fBpython\fP in a terminal then, \fBimport salt\fP\&. There should be no +errors. Now exit the Python terminal using \fBexit()\fP\&. +.SS Create The Master Configuration +.sp +If the default /etc/salt/master configuration file was not created, +copy\-paste it from here: +\fI\%https://docs.saltproject.io/en/latest/ref/configuration/examples.html#configuration\-examples\-master\fP +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +\fB/etc/salt/master\fP is a file, not a folder. +.UNINDENT +.UNINDENT +.sp +Salt Master configuration changes. The Salt master needs a few customization +to be able to run on macOS: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo launchctl limit maxfiles 4096 8192 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +In the /etc/salt/master file, change max_open_files to 8192 (or just add the +line: \fBmax_open_files: 8192\fP (no quote) if it doesn\(aqt already exists). +.sp +You should now be able to launch the Salt master: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo salt\-master \-\-log\-level=all +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +There should be no errors when running the above command. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This command is supposed to be a daemon, but for toying around, we\(aqll keep +it running on a terminal to monitor the activity. +.UNINDENT +.UNINDENT +.sp +Now that the master is set, let\(aqs configure a minion on a VM. +.SS Step 2 \- Configuring The Minion VM +.sp +The Salt minion is going to run on a Virtual Machine. There are a lot of +software options that let you run virtual machines on a mac, But for this +tutorial we\(aqre going to use VirtualBox. In addition to virtualBox, we will use +Vagrant, which allows you to create the base VM configuration. +.sp +Vagrant lets you build ready to use VM images, starting from an OS image and +customizing it using "provisioners". In our case, we\(aqll use it to: +.INDENT 0.0 +.IP \(bu 2 +Download the base Ubuntu image +.IP \(bu 2 +Install salt on that Ubuntu image (Salt is going to be the "provisioner" +for the VM). +.IP \(bu 2 +Launch the VM +.IP \(bu 2 +SSH into the VM to debug +.IP \(bu 2 +Stop the VM once you\(aqre done. +.UNINDENT +.SS Install VirtualBox +.sp +Go get it here: \fI\%https://www.virtualbox.org/wiki/Downloads\fP (click on VirtualBox +for macOS hosts => x86/amd64) +.SS Install Vagrant +.sp +Go get it here: \fI\%https://www.vagrantup.com/downloads.html\fP and choose the latest version +(1.3.5 at time of writing), then the .dmg file. Double\-click to install it. +Make sure the \fBvagrant\fP command is found when run in the terminal. Type +\fBvagrant\fP\&. It should display a list of commands. +.SS Create The Minion VM Folder +.sp +Create a folder in which you will store your minion\(aqs VM. In this tutorial, +it\(aqs going to be a minion folder in the $home directory. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +cd $home +mkdir minion +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Initialize Vagrant +.sp +From the minion folder, type +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +vagrant init +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +This command creates a default Vagrantfile configuration file. This +configuration file will be used to pass configuration parameters to the Salt +provisioner in Step 3. +.SS Import Precise64 Ubuntu Box +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +vagrant box add precise64 http://files.vagrantup.com/precise64.box +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This box is added at the global Vagrant level. You only need to do it +once as each VM will use this same file. +.UNINDENT +.UNINDENT +.SS Modify the Vagrantfile +.sp +Modify ./minion/Vagrantfile to use th precise64 box. Change the \fBconfig.vm.box\fP +line to: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +config.vm.box = "precise64" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Uncomment the line creating a host\-only IP. This is the ip of your minion +(you can change it to something else if that IP is already in use): +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +config.vm.network :private_network, ip: "192.168.33.10" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +At this point you should have a VM that can run, although there won\(aqt be much +in it. Let\(aqs check that. +.SS Checking The VM +.sp +From the $home/minion folder type: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +vagrant up +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +A log showing the VM booting should be present. Once it\(aqs done you\(aqll be back +to the terminal: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +ping 192.168.33.10 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The VM should respond to your ping request. +.sp +Now log into the VM in ssh using Vagrant again: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +vagrant ssh +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +You should see the shell prompt change to something similar to +\fBvagrant@precise64:~$\fP meaning you\(aqre inside the VM. From there, enter the +following: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +ping 10.0.2.2 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +That ip is the ip of your VM host (the macOS host). The number is a +VirtualBox default and is displayed in the log after the Vagrant ssh +command. We\(aqll use that IP to tell the minion where the Salt master is. +Once you\(aqre done, end the ssh session by typing \fBexit\fP\&. +.UNINDENT +.UNINDENT +.sp +It\(aqs now time to connect the VM to the salt master +.SS Step 3 \- Connecting Master and Minion +.SS Creating The Minion Configuration File +.sp +Create the \fB/etc/salt/minion\fP file. In that file, put the +following lines, giving the ID for this minion, and the IP of the master: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +master: 10.0.2.2 +id: \(aqminion1\(aq +file_client: remote +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Minions authenticate with the master using keys. Keys are generated +automatically if you don\(aqt provide one and can accept them later on. However, +this requires accepting the minion key every time the minion is destroyed or +created (which could be quite often). A better way is to create those keys in +advance, feed them to the minion, and authorize them once. +.SS Preseed minion keys +.sp +From the minion folder on your Mac run: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo salt\-key \-\-gen\-keys=minion1 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +This should create two files: minion1.pem, and minion1.pub. +Since those files have been created using sudo, but will be used by vagrant, +you need to change ownership: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo chown youruser:yourgroup minion1.pem +sudo chown youruser:yourgroup minion1.pub +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Then copy the .pub file into the list of accepted minions: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo cp minion1.pub /etc/salt/pki/master/minions/minion1 +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Modify Vagrantfile to Use Salt Provisioner +.sp +Let\(aqs now modify the Vagrantfile used to provision the Salt VM. Add the +following section in the Vagrantfile (note: it should be at the same +indentation level as the other properties): +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +# salt\-vagrant config +config.vm.provision :salt do |salt| + salt.run_highstate = true + salt.minion_config = "/etc/salt/minion" + salt.minion_key = "./minion1.pem" + salt.minion_pub = "./minion1.pub" +end +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Now destroy the vm and recreate it from the /minion folder: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +vagrant destroy +vagrant up +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +If everything is fine you should see the following message: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +"Bootstrapping Salt... (this may take a while) +Salt successfully configured and installed!" +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Checking Master\-Minion Communication +.sp +To make sure the master and minion are talking to each other, enter the +following: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo salt \(aq*\(aq test.version +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +You should see your minion answering with its salt version. It\(aqs now time to do some +configuration. +.SS Step 4 \- Configure Services to Install On the Minion +.sp +In this step we\(aqll use the Salt master to instruct our minion to install +Nginx. +.SS Checking the system\(aqs original state +.sp +First, make sure that an HTTP server is not installed on our minion. +When opening a browser directed at \fBhttp://192.168.33.10/\fP You should get an +error saying the site cannot be reached. +.SS Initialize the top.sls file +.sp +System configuration is done in \fB/srv/salt/top.sls\fP (and subfiles/folders), +and then applied by running the \fBstate.apply\fP function to have the Salt master order its minions +to update their instructions and run the associated commands. +.sp +First Create an empty file on your Salt master (macOS machine): +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +touch /srv/salt/top.sls +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +When the file is empty, or if no configuration is found for our minion +an error is reported: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo salt \(aqminion1\(aq state.apply +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +This should return an error stating: \fBNo Top file or external nodes data +matches found\fP\&. +.SS Create The Nginx Configuration +.sp +Now is finally the time to enter the real meat of our server\(aqs configuration. +For this tutorial our minion will be treated as a web server that needs to +have Nginx installed. +.sp +Insert the following lines into \fB/srv/salt/top.sls\fP (which should current be +empty). +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +base: + \(aqminion1\(aq: + \- bin.nginx +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Now create \fB/srv/salt/bin/nginx.sls\fP containing the following: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +nginx: + pkg.installed: + \- name: nginx + service.running: + \- enable: True + \- reload: True +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Check Minion State +.sp +Finally, run the \fBstate.apply\fP function +again: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +sudo salt \(aqminion1\(aq state.apply +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +You should see a log showing that the Nginx package has been installed +and the service configured. To prove it, open your browser and navigate to +\fI\%http://192.168.33.10/\fP, you should see the standard Nginx welcome page. +.sp +Congratulations! +.SS Where To Go From Here +.sp +A full description of configuration management within Salt (sls files among +other things) is available here: +\fI\%https://docs.saltproject.io/en/latest/index.html#configuration\-management\fP .SS Salt\(aqs Test Suite: An Introduction .sp \fBNOTE:\fP @@ -52478,7 +50340,7 @@ It is a standalone product that anyone is free to use. .IP 2. 3 It is developed in the open with contributions accepted from the community for the good of the project. .IP 3. 3 -There are no features of Salt itself that are restricted to separate proprietary products distributed by SaltStack, Inc. +There are no features of Salt itself that are restricted to separate proprietary products distributed by VMware, Inc. .IP 4. 3 Because of our Apache 2.0 license, Salt can be used as the foundation for a project or even a proprietary tool. .IP 5. 3 @@ -57093,7 +54955,7 @@ All requisite types have a corresponding \fI\%_in\fP form: .IP \(bu 2 \fI\%watch\fP: Similar to \fBonchanges\fP; modifies state behavior using \fBmod_watch\fP .IP \(bu 2 -\fI\%listen\fP: Similar to \fBonchanges\fP; delays execution to end of state run using \fBmod_wait\fP +\fI\%listen\fP: Similar to \fBonchanges\fP; delays execution to end of state run using \fBmod_watch\fP .IP \(bu 2 \fI\%prereq\fP: Execute prior to target state if target state expects to produce changes .IP \(bu 2 @@ -57453,8 +55315,8 @@ service will get restarted like you want. New in version 2014.7.0. .sp -A \fBlisten\fP requisite is used to trigger the \fBmod_wait\fP function of an -execution module. Rather than modifying execution order, the \fBmod_wait\fP state +A \fBlisten\fP requisite is used to trigger the \fBmod_watch\fP function of a +state module. Rather than modifying execution order, the \fBmod_watch\fP state created by \fBlisten\fP will execute at the end of the state run. .INDENT 0.0 .INDENT 3.5 @@ -57814,7 +55676,7 @@ be installed. Thus allowing for a requisite to be defined "after the fact". .UNINDENT .sp In this scenario, \fBlisten_in\fP is a better choice than \fBrequire_in\fP because the -\fBlisten\fP requisite will trigger \fBmod_wait\fP behavior which will wait until the +\fBlisten\fP requisite will trigger \fBmod_watch\fP behavior which will wait until the end of state execution and then reload the service. .SS The _any version of requisites .sp @@ -58246,9 +56108,9 @@ Check Command is used for determining that a state did or did not run as expected. .sp \fBNOTE\fP: Under the hood \fBcheck_cmd\fP calls \fBcmd.retcode\fP with -\fBpython_shell=True\fP\&. This means the commands referenced by unless will be -parsed by a shell, so beware of side\-effects as this shell will be run with the -same privileges as the salt\-minion. +\fBpython_shell=True\fP\&. This means the command will be parsed by a shell, so +beware of side\-effects as this shell will be run with the same privileges as +the salt\-minion. .INDENT 0.0 .INDENT 3.5 .sp @@ -59194,22 +57056,9 @@ twice, even though \fBqa1\fP appears twice. \fBWARNING:\fP .INDENT 0.0 .INDENT 3.5 -In the 3002 release \fBsls_path\fP, \fBtplfile\fP, and \fBtpldir\fP have had some significant +In the 3005 release \fBsls_path\fP, \fBtplfile\fP, and \fBtpldir\fP have had some significant improvements which have the potential to break states that rely on old and -broken functionality. These fixes can be enabled by setting the -\fBenable_slsvars_fixes\fP feature flag to \fBTrue\fP in your minion\(aqs config file. -This functionality will become the default in the 3005 release. -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -features: - enable_slsvars_fixes: True -.ft P -.fi -.UNINDENT -.UNINDENT +broken functionality. .UNINDENT .UNINDENT .sp @@ -61230,9 +59079,7 @@ import salt.utils.event opts = salt.config.client_config("/etc/salt/master") -event = salt.utils.event.get_event( - "master", sock_dir=opts["sock_dir"], transport=opts["transport"], opts=opts -) +event = salt.utils.event.get_event("master", sock_dir=opts["sock_dir"], opts=opts) data = event.get_event() .ft P @@ -61304,9 +59151,7 @@ import salt.utils.event opts = salt.config.client_config("/etc/salt/master") -sevent = salt.utils.event.get_event( - "master", sock_dir=opts["sock_dir"], transport=opts["transport"], opts=opts -) +sevent = salt.utils.event.get_event("master", sock_dir=opts["sock_dir"], opts=opts) while True: ret = sevent.get_event(full=True) @@ -63719,7 +61564,7 @@ Salt ssh is considered production ready in version 2014.7.0 .IP \(bu 2 Python is required on the remote system (unless using the \fB\-r\fP option to send raw ssh commands). The python version requirement is the same as that -for a standard Salt installation\&. +for a standard Salt installation. .IP \(bu 2 On many systems, the \fBsalt\-ssh\fP executable will be in its own package, usually named \fBsalt\-ssh\fP @@ -64167,6 +62012,9 @@ The information which can be stored in a roster \fBtarget\fP is the following: # does not exist, unless \-\-pre\-flight is passed to salt\-ssh # command or ssh_run_pre_flight is set to true in the config # Added in 3001 Release. + ssh_pre_flight_args: # The list of arguments to pass to the script + # running on the minion with ssh_pre_flight. + # Can be specified as single string. set_path: # Set the path environment variable, to ensure the expected python # binary is in the salt\-ssh path, when running the command. # Example: \(aq$PATH:/usr/local/bin/\(aq. Added in 3001 Release. @@ -64191,6 +62039,11 @@ Set ssh_run_pre_flight to True in the config .IP \(bu 2 Run salt\-ssh with the \-\-pre\-flight arg. .UNINDENT +.SS ssh_pre_flight_args +.sp +Additional arguments to the script running on the minion with \fIssh_pre_flight\fP can be passed +with specifying a list of arguments or a single string. In case of using single string +distinct arguments will be passed to the script by splitting this string with the spaces. .SS Target Defaults .sp The \fIroster_defaults\fP dictionary in the master config is used to set the @@ -67146,6 +64999,15 @@ Aliyun ECS REST API documentation is available from \fI\%Aliyun ECS API\fP\&. .sp New in version 2014.1.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 due to +the deprecation of the "Classic" API for Azure. Please migrate to +\fI\%Azure Resource Manager by March 1, 2023\fP +.UNINDENT +.UNINDENT .sp Azure is a cloud service by Microsoft providing virtual machines, SQL services, media services, and more. This document describes how to use Salt Cloud to @@ -68799,6 +66661,14 @@ Sleep time in secs between retries. .sp New in version 2016.11.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .sp Azure is a cloud service by Microsoft providing virtual machines, SQL services, media services, and more. Azure ARM (aka, the Azure Resource Manager) is a next @@ -75290,6 +73160,9 @@ proxmox\-win7: # Workaround https://github.com/saltstack/salt/issues/27821 size: \(aq\(aq + + # Enable the use of a Qemu agent on VM to retrieve the IP\-address from. + agent_get_ip: True .ft P .fi .UNINDENT @@ -77594,6 +75467,15 @@ vcenter02: protocol: \(aqhttp\(aq port: 80 +vcenter03\-do\-not\-verify: + driver: vmware + user: \(aqDOMAIN\euser\(aq + password: \(aqverybadpass\(aq + url: \(aqvcenter01.domain.com\(aq + protocol: \(aqhttps\(aq + port: 443 + verify_ssl: False + esx01: driver: vmware user: \(aqadmin\(aq @@ -77745,6 +75627,7 @@ vmware\-centos6.5: plain_text: True win_installer: /root/Salt\-Minion\-2015.8.4\-AMD64\-Setup.exe win_user_fullname: Windows User + verify_ssl: False .ft P .fi .UNINDENT @@ -78064,6 +75947,24 @@ Default is \fBtemplate: False\fP\&. Specifies whether the new virtual machine should be powered on or not. If \fBtemplate: True\fP is set, this field is ignored. Default is \fBpower_on: True\fP\&. .TP +.B \fBcpu_hot_add\fP +Boolean value that enables hot\-add support for adding CPU resources while +the guest is powered on. +.TP +.B \fBcpu_hot_remove\fP +Boolean value that enables hot\-remove support for removing CPU resources while +the guest is powered on. +.TP +.B \fBmem_hot_add\fP +Boolean value that enables hot\-add support for adding memory resources while +the guest is powered on. +.TP +.B \fBnested_hv\fP +Boolean value that enables support for nested hardware\-assisted virtualization. +.TP +.B \fBvpmc\fP +Boolean value that enables virtual CPU performance counters. +.TP .B \fBextra_config\fP Specifies the additional configuration information for the virtual machine. This describes a set of modifications to the additional options. If the key is already @@ -78181,6 +76082,9 @@ Specify windows minion client installer path Specify a list of commands to run on first login to a windows minion .sp \fI\%https://www.vmware.com/support/developer/vc\-sdk/visdk25pubs/ReferenceGuide/vim.vm.customization.GuiRunOnce.html\fP +.TP +.B \fBverify_ssl\fP +Verify the vmware ssl certificate. The default is True. .UNINDENT .SS Cloning a VM .sp @@ -78260,6 +76164,51 @@ my\-disk\-example: .fi .UNINDENT .UNINDENT +.SS Instant Cloning a VM +.sp +Instant Cloning a powered\-ON VM is the easiest and the preferred way to work with VMs from controlled point in time using the VMware driver. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +Instant Cloning operations are unsupported on standalone ESXi hosts, a vCenter server will be required. +.UNINDENT +.UNINDENT +.sp +Example of a minimal profile when skipping optional parameters: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +my\-minimal\-clone: + provider: vcenter01 + clonefrom: \(aqtest\-vm\(aq + instant_clone: true +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +When Instant cloning a VM, all the profile configuration parameters are optional and the configuration gets inherited from the clone. +.sp +Example to specify optional parameters : +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +my\-minimal\-clone: + provider: vcenter01 + clonefrom: \(aqtest\-vm\(aq + instant_clone: true + datastore: \(aqlocal\-0 (1)\(aq + datacenter: \(aqvAPISdkDatacenter\(aq + resourcepool: \(aqRP1\(aq +.ft P +.fi +.UNINDENT +.UNINDENT .SS Cloning a Template .sp Cloning a template works similar to cloning a VM except for the fact that a resource @@ -78733,13 +76682,13 @@ file_transport: scp .UNINDENT .SS Sync After Install .sp -Salt allows users to create custom modules, grains, and states which can be -synchronised to minions to extend Salt with further functionality. +Salt allows users to create custom plugins such as execution, grains, and state +modules which can be synchronised to minions to extend Salt with further +functionality. .sp -This option will inform Salt Cloud to synchronise your custom modules, grains, -states or all these to the minion just after it has been created. For this to -happen, the following line needs to be added to the main cloud -configuration file: +This option will inform Salt Cloud to synchronise your custom modules to the +minion just after it has been created. For this to happen, the following line +needs to be added to the main cloud configuration file: .INDENT 0.0 .INDENT 3.5 .sp @@ -78757,14 +76706,33 @@ The available options for this setting are: .sp .nf .ft C -modules +all +beacons +clouds +engines +executors grains +log +matchers +modules +output +pillar +proxymodules +renderers +returners +sdb +serializers states -all +thorium +utils .ft P .fi .UNINDENT .UNINDENT +.sp +A present and non\-falsy value that doesn\(aqt match one of these list items will +assume \fIall\fP, so \fIsync_after_install: True\fP and \fIsync_after_install: all\fP are +equivalent (though the former will produce a warning). .SS Setting Up New Salt Masters .sp It has become increasingly common for users to set up multi\-hierarchal @@ -80010,9 +77978,7 @@ start_action: state.apply .sp This is currently considered to be experimental functionality, and may not work well with all cloud hosts. If you experience problems with Salt Cloud hanging -after Salt is deployed, consider using Startup States instead: -.sp -\fI\%https://docs.saltproject.io/ref/states/startup.html\fP +after Salt is deployed, consider using Startup States instead. .SS Skipping the Deploy Script .sp For whatever reason, you may want to skip the deploy script altogether. This @@ -80104,7 +78070,7 @@ salt\-cloud \-\-update\-bootstrap .sp Bear in mind that this updates to the latest \fBstable\fP version from: .sp -\fI\%https://bootstrap.saltstack.com/stable/bootstrap\-salt.sh\fP +\fI\%https://bootstrap.saltproject.io/stable/bootstrap\-salt.sh\fP .sp To update Salt Bootstrap script to the \fBdevelop\fP version, run the following command on the Salt minion host with \fBsalt\-cloud\fP installed: @@ -80113,7 +78079,7 @@ command on the Salt minion host with \fBsalt\-cloud\fP installed: .sp .nf .ft C -salt\-call config.gather_bootstrap_script \(aqhttps://bootstrap.saltstack.com/develop/bootstrap\-salt.sh\(aq +salt\-call config.gather_bootstrap_script \(aqhttps://bootstrap.saltproject.io/develop/bootstrap\-salt.sh\(aq .ft P .fi .UNINDENT @@ -80125,7 +78091,7 @@ Or just download the file manually: .sp .nf .ft C -curl \-L \(aqhttps://bootstrap.saltstack.com/develop\(aq > /etc/salt/cloud.deploy.d/bootstrap\-salt.sh +curl \-L \(aqhttps://bootstrap.saltproject.io/develop\(aq > /etc/salt/cloud.deploy.d/bootstrap\-salt.sh .ft P .fi .UNINDENT @@ -85481,6 +83447,11 @@ Exit with the salt call retcode and not the salt binary retcode .UNINDENT .INDENT 0.0 .TP +.B \-\-no\-return\-event +Do not send the return event back to master. +.UNINDENT +.INDENT 0.0 +.TP .B \-\-metadata Print out the execution metadata as well as the return. This will print out the outputter data, the return code, etc. @@ -86865,354 +84836,181 @@ on most systems is \fB/etc/salt\fP\&. .UNINDENT .INDENT 0.0 .TP -.B \-\-hard\-crash -Raise any original exception rather than exiting gracefully. Default: False. -.UNINDENT -.INDENT 0.0 -.TP -.B \-r, \-\-raw, \-\-raw\-shell -Execute a raw shell command. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-roster -Define which roster system to use, this defines if a database backend, -scanner, or custom roster system is used. Default is the flat file roster. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-roster\-file -Define an alternative location for the default roster file location. The -default roster file is called \fBroster\fP and is found in the same directory -as the master config file. -.sp -New in version 2014.1.0. - -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-refresh, \-\-refresh\-cache -Force a refresh of the master side data cache of the target\(aqs data. This -is needed if a target\(aqs grains have been changed and the auto refresh -timeframe has not been reached. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-max\-procs -Set the number of concurrent minions to communicate with. This value -defines how many processes are opened up at a time to manage connections, -the more running process the faster communication should be, default -is 25. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-extra\-filerefs=EXTRA_FILEREFS -Pass in extra files to include in the state tarball. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-min\-extra\-modules=MIN_EXTRA_MODS -One or comma\-separated list of extra Python modulesto be included -into Minimal Salt. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-thin\-extra\-modules=THIN_EXTRA_MODS -One or comma\-separated list of extra Python modulesto be included -into Thin Salt. -.UNINDENT -.INDENT 0.0 -.TP -.B \-v, \-\-verbose -Turn on command verbosity, display jid. -.UNINDENT -.INDENT 0.0 -.TP -.B \-s, \-\-static -Return the data from minions as a group after they all return. -.UNINDENT -.INDENT 0.0 -.TP -.B \-w, \-\-wipe -Remove the deployment of the salt files when done executing. -.UNINDENT -.INDENT 0.0 -.TP -.B \-W, \-\-rand\-thin\-dir -Select a random temp dir to deploy on the remote system. The dir -will be cleaned after the execution. -.UNINDENT -.INDENT 0.0 -.TP -.B \-t, \-\-regen\-thin, \-\-thin -Trigger a thin tarball regeneration. This is needed if custom -grains/modules/states have been added or updated. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-python2\-bin=PYTHON2_BIN -Path to a python2 binary which has salt installed. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-python3\-bin=PYTHON3_BIN -Path to a python3 binary which has salt installed. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-jid=JID -Pass a JID to be used instead of generating one. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-pre\-flight -Run the ssh_pre_flight script defined in the roster. -By default this script will only run if the thin dir -does not exist on the target minion. This option will -force the script to run regardless of the thin dir -existing or not. -.UNINDENT -.SS Authentication Options -.INDENT 0.0 -.TP -.B \-\-priv=SSH_PRIV -Specify the SSH private key file to be used for authentication. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-priv\-passwd=SSH_PRIV_PASSWD -Specify the SSH private key file\(aqs passphrase if need be. -.UNINDENT -.INDENT 0.0 -.TP -.B \-i, \-\-ignore\-host\-keys -By default ssh host keys are honored and connections will ask for -approval. Use this option to disable StrictHostKeyChecking. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-no\-host\-keys -Fully ignores ssh host keys which by default are honored and connections -would ask for approval. Useful if the host key of a remote server has -changed and would still error with \-\-ignore\-host\-keys. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-user=SSH_USER -Set the default user to attempt to use when authenticating. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-passwd -Set the default password to attempt to use when authenticating. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-askpass -Interactively ask for the SSH password with no echo \- avoids password -in process args and stored in history. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-key\-deploy -Set this flag to attempt to deploy the authorized ssh key with all -minions. This combined with \-\-passwd can make initial deployment of keys -very fast and easy. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-identities\-only -Use the only authentication identity files configured in the ssh_config -files. See IdentitiesOnly flag in man ssh_config. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-sudo -Run command via sudo. -.UNINDENT -.SS Scan Roster Options -.INDENT 0.0 -.TP -.B \-\-scan\-ports=SSH_SCAN_PORTS -Comma\-separated list of ports to scan in the scan roster. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-scan\-timeout=SSH_SCAN_TIMEOUT -Scanning socket timeout for the scan roster. -.UNINDENT -.SS Logging Options -.sp -Logging options which override any settings defined on the configuration files. -.INDENT 0.0 -.TP -.B \-l LOG_LEVEL, \-\-log\-level=LOG_LEVEL -Console logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP, -\fBdebug\fP, \fBinfo\fP, \fBwarning\fP, \fBerror\fP, \fBquiet\fP\&. Default: -\fBwarning\fP\&. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-log\-file=LOG_FILE -Log file path. Default: /var/log/salt/ssh\&. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-log\-file\-level=LOG_LEVEL_LOGFILE -Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP, -\fBdebug\fP, \fBinfo\fP, \fBwarning\fP, \fBerror\fP, \fBquiet\fP\&. Default: -\fBwarning\fP\&. -.UNINDENT -.SS Target Selection -.sp -The default matching that Salt utilizes is shell\-style globbing around the -minion id. See \fI\%https://docs.python.org/3/library/fnmatch.html#module\-fnmatch\fP\&. -.INDENT 0.0 -.TP -.B \-E, \-\-pcre -The target expression will be interpreted as a PCRE regular expression -rather than a shell glob. -.UNINDENT -.SS Output Options -.INDENT 0.0 -.TP -.B \-\-out -Pass in an alternative outputter to display the return of data. This -outputter can be any of the available outputters: -.INDENT 7.0 -.INDENT 3.5 -\fBhighstate\fP, \fBjson\fP, \fBkey\fP, \fBoverstatestage\fP, \fBpprint\fP, \fBraw\fP, \fBtxt\fP, \fByaml\fP, and many others\&. -.UNINDENT -.UNINDENT -.sp -Some outputters are formatted only for data returned from specific functions. -If an outputter is used that does not support the data passed into it, then -Salt will fall back on the \fBpprint\fP outputter and display the return data -using the Python \fBpprint\fP standard library module. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-out\-indent OUTPUT_INDENT, \-\-output\-indent OUTPUT_INDENT -Print the output indented by the provided value in spaces. Negative values -disable indentation. Only applicable in outputters that support -indentation. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-out\-file=OUTPUT_FILE, \-\-output\-file=OUTPUT_FILE -Write the output to the specified file. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-out\-file\-append, \-\-output\-file\-append -Append the output to the specified file. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-no\-color -Disable all colored output -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-force\-color -Force colored output -.sp -\fBNOTE:\fP -.INDENT 7.0 -.INDENT 3.5 -When using colored output the color codes are as follows: -.sp -\fBgreen\fP denotes success, \fBred\fP denotes failure, \fBblue\fP denotes -changes and success and \fByellow\fP denotes a expected future change in configuration. -.UNINDENT -.UNINDENT -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-state\-output=STATE_OUTPUT, \-\-state_output=STATE_OUTPUT -Override the configured state_output value for minion -output. One of \(aqfull\(aq, \(aqterse\(aq, \(aqmixed\(aq, \(aqchanges\(aq or -\(aqfilter\(aq. Default: \(aqnone\(aq. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-state\-verbose=STATE_VERBOSE, \-\-state_verbose=STATE_VERBOSE -Override the configured state_verbose value for minion -output. Set to True or False. Default: none. -.UNINDENT -.sp -\fBNOTE:\fP -.INDENT 0.0 -.INDENT 3.5 -If using \fB\-\-out=json\fP, you will probably want \fB\-\-static\fP as well. -Without the static option, you will get a separate JSON string per minion -which makes JSON output invalid as a whole. -This is due to using an iterative outputter. So if you want to feed it -to a JSON parser, use \fB\-\-static\fP as well. -.UNINDENT -.UNINDENT -.SS See also -.sp -\fBsalt(7)\fP -\fBsalt\-master(1)\fP -\fBsalt\-minion(1)\fP -.SS salt\-syndic -.SS \fBsalt\-syndic\fP -.sp -The Salt syndic daemon, a special minion that passes through commands from a -higher master -.SS Synopsis -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt\-syndic [ options ] -.ft P -.fi -.UNINDENT -.UNINDENT -.SS Description -.sp -The Salt syndic daemon, a special minion that passes through commands from a -higher master. -.SS Options -.INDENT 0.0 -.TP -.B \-\-version -Print the version of Salt that is running. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-versions\-report -Show program\(aqs dependencies and version number, and then exit -.UNINDENT -.INDENT 0.0 -.TP -.B \-h, \-\-help -Show the help message and exit -.UNINDENT -.INDENT 0.0 -.TP -.B \-c CONFIG_DIR, \-\-config\-dir=CONFIG_dir -The location of the Salt configuration directory. This directory contains -the configuration files for Salt master and minions. The default location -on most systems is \fB/etc/salt\fP\&. -.UNINDENT -.INDENT 0.0 -.TP -.B \-u USER, \-\-user=USER -Specify user to run salt\-syndic +.B \-\-hard\-crash +Raise any original exception rather than exiting gracefully. Default: False. .UNINDENT .INDENT 0.0 .TP -.B \-d, \-\-daemon -Run salt\-syndic as a daemon +.B \-r, \-\-raw, \-\-raw\-shell +Execute a raw shell command. .UNINDENT .INDENT 0.0 .TP -.B \-\-pid\-file PIDFILE -Specify the location of the pidfile. Default: /var/run/salt\-syndic\&.pid +.B \-\-roster +Define which roster system to use, this defines if a database backend, +scanner, or custom roster system is used. Default is the flat file roster. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-roster\-file +Define an alternative location for the default roster file location. The +default roster file is called \fBroster\fP and is found in the same directory +as the master config file. +.sp +New in version 2014.1.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-refresh, \-\-refresh\-cache +Force a refresh of the master side data cache of the target\(aqs data. This +is needed if a target\(aqs grains have been changed and the auto refresh +timeframe has not been reached. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-max\-procs +Set the number of concurrent minions to communicate with. This value +defines how many processes are opened up at a time to manage connections, +the more running process the faster communication should be, default +is 25. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-extra\-filerefs=EXTRA_FILEREFS +Pass in extra files to include in the state tarball. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-min\-extra\-modules=MIN_EXTRA_MODS +One or comma\-separated list of extra Python modulesto be included +into Minimal Salt. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-thin\-extra\-modules=THIN_EXTRA_MODS +One or comma\-separated list of extra Python modulesto be included +into Thin Salt. +.UNINDENT +.INDENT 0.0 +.TP +.B \-v, \-\-verbose +Turn on command verbosity, display jid. +.UNINDENT +.INDENT 0.0 +.TP +.B \-s, \-\-static +Return the data from minions as a group after they all return. +.UNINDENT +.INDENT 0.0 +.TP +.B \-w, \-\-wipe +Remove the deployment of the salt files when done executing. +.UNINDENT +.INDENT 0.0 +.TP +.B \-W, \-\-rand\-thin\-dir +Select a random temp dir to deploy on the remote system. The dir +will be cleaned after the execution. +.UNINDENT +.INDENT 0.0 +.TP +.B \-t, \-\-regen\-thin, \-\-thin +Trigger a thin tarball regeneration. This is needed if custom +grains/modules/states have been added or updated. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-python2\-bin=PYTHON2_BIN +Path to a python2 binary which has salt installed. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-python3\-bin=PYTHON3_BIN +Path to a python3 binary which has salt installed. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-jid=JID +Pass a JID to be used instead of generating one. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-pre\-flight +Run the ssh_pre_flight script defined in the roster. +By default this script will only run if the thin dir +does not exist on the target minion. This option will +force the script to run regardless of the thin dir +existing or not. +.UNINDENT +.SS Authentication Options +.INDENT 0.0 +.TP +.B \-\-priv=SSH_PRIV +Specify the SSH private key file to be used for authentication. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-priv\-passwd=SSH_PRIV_PASSWD +Specify the SSH private key file\(aqs passphrase if need be. +.UNINDENT +.INDENT 0.0 +.TP +.B \-i, \-\-ignore\-host\-keys +By default ssh host keys are honored and connections will ask for +approval. Use this option to disable StrictHostKeyChecking. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-no\-host\-keys +Fully ignores ssh host keys which by default are honored and connections +would ask for approval. Useful if the host key of a remote server has +changed and would still error with \-\-ignore\-host\-keys. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-user=SSH_USER +Set the default user to attempt to use when authenticating. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-passwd +Set the default password to attempt to use when authenticating. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-askpass +Interactively ask for the SSH password with no echo \- avoids password +in process args and stored in history. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-key\-deploy +Set this flag to attempt to deploy the authorized ssh key with all +minions. This combined with \-\-passwd can make initial deployment of keys +very fast and easy. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-identities\-only +Use the only authentication identity files configured in the ssh_config +files. See IdentitiesOnly flag in man ssh_config. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-sudo +Run command via sudo. +.UNINDENT +.SS Scan Roster Options +.INDENT 0.0 +.TP +.B \-\-scan\-ports=SSH_SCAN_PORTS +Comma\-separated list of ports to scan in the scan roster. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-scan\-timeout=SSH_SCAN_TIMEOUT +Scanning socket timeout for the scan roster. .UNINDENT .SS Logging Options .sp @@ -87227,7 +85025,7 @@ Console logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP, .INDENT 0.0 .TP .B \-\-log\-file=LOG_FILE -Log file path. Default: /var/log/salt/master\&. +Log file path. Default: /var/log/salt/ssh\&. .UNINDENT .INDENT 0.0 .TP @@ -87236,44 +85034,184 @@ Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP, \fBdebug\fP, \fBinfo\fP, \fBwarning\fP, \fBerror\fP, \fBquiet\fP\&. Default: \fBwarning\fP\&. .UNINDENT +.SS Target Selection +.sp +The default matching that Salt utilizes is shell\-style globbing around the +minion id. See \fI\%https://docs.python.org/3/library/fnmatch.html#module\-fnmatch\fP\&. +.INDENT 0.0 +.TP +.B \-E, \-\-pcre +The target expression will be interpreted as a PCRE regular expression +rather than a shell glob. +.UNINDENT +.SS Output Options +.INDENT 0.0 +.TP +.B \-\-out +Pass in an alternative outputter to display the return of data. This +outputter can be any of the available outputters: +.INDENT 7.0 +.INDENT 3.5 +\fBhighstate\fP, \fBjson\fP, \fBkey\fP, \fBoverstatestage\fP, \fBpprint\fP, \fBraw\fP, \fBtxt\fP, \fByaml\fP, and many others\&. +.UNINDENT +.UNINDENT +.sp +Some outputters are formatted only for data returned from specific functions. +If an outputter is used that does not support the data passed into it, then +Salt will fall back on the \fBpprint\fP outputter and display the return data +using the Python \fBpprint\fP standard library module. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-out\-indent OUTPUT_INDENT, \-\-output\-indent OUTPUT_INDENT +Print the output indented by the provided value in spaces. Negative values +disable indentation. Only applicable in outputters that support +indentation. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-out\-file=OUTPUT_FILE, \-\-output\-file=OUTPUT_FILE +Write the output to the specified file. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-out\-file\-append, \-\-output\-file\-append +Append the output to the specified file. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-no\-color +Disable all colored output +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-force\-color +Force colored output +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +When using colored output the color codes are as follows: +.sp +\fBgreen\fP denotes success, \fBred\fP denotes failure, \fBblue\fP denotes +changes and success and \fByellow\fP denotes a expected future change in configuration. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-state\-output=STATE_OUTPUT, \-\-state_output=STATE_OUTPUT +Override the configured state_output value for minion +output. One of \(aqfull\(aq, \(aqterse\(aq, \(aqmixed\(aq, \(aqchanges\(aq or +\(aqfilter\(aq. Default: \(aqnone\(aq. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-state\-verbose=STATE_VERBOSE, \-\-state_verbose=STATE_VERBOSE +Override the configured state_verbose value for minion +output. Set to True or False. Default: none. +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +If using \fB\-\-out=json\fP, you will probably want \fB\-\-static\fP as well. +Without the static option, you will get a separate JSON string per minion +which makes JSON output invalid as a whole. +This is due to using an iterative outputter. So if you want to feed it +to a JSON parser, use \fB\-\-static\fP as well. +.UNINDENT +.UNINDENT .SS See also .sp -\fBsalt(1)\fP +\fBsalt(7)\fP \fBsalt\-master(1)\fP \fBsalt\-minion(1)\fP -.SS salt\-unity -.SS \fBsalt\-unity\fP +.SS salt\-syndic +.SS \fBsalt\-syndic\fP .sp -A unified invocation wrapper around other Salt CLI scripts. +The Salt syndic daemon, a special minion that passes through commands from a +higher master .SS Synopsis .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -salt\-unity salt \(aq*\(aq test.version +salt\-syndic [ options ] .ft P .fi .UNINDENT .UNINDENT .SS Description .sp -This script takes an argument which is one of the other Salt CLI scripts and -invokes that script. +The Salt syndic daemon, a special minion that passes through commands from a +higher master. .SS Options +.INDENT 0.0 +.TP +.B \-\-version +Print the version of Salt that is running. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-versions\-report +Show program\(aqs dependencies and version number, and then exit +.UNINDENT +.INDENT 0.0 +.TP +.B \-h, \-\-help +Show the help message and exit +.UNINDENT +.INDENT 0.0 +.TP +.B \-c CONFIG_DIR, \-\-config\-dir=CONFIG_dir +The location of the Salt configuration directory. This directory contains +the configuration files for Salt master and minions. The default location +on most systems is \fB/etc/salt\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-u USER, \-\-user=USER +Specify user to run salt\-syndic +.UNINDENT +.INDENT 0.0 +.TP +.B \-d, \-\-daemon +Run salt\-syndic as a daemon +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-pid\-file PIDFILE +Specify the location of the pidfile. Default: /var/run/salt\-syndic\&.pid +.UNINDENT +.SS Logging Options +.sp +Logging options which override any settings defined on the configuration files. +.INDENT 0.0 +.TP +.B \-l LOG_LEVEL, \-\-log\-level=LOG_LEVEL +Console logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP, +\fBdebug\fP, \fBinfo\fP, \fBwarning\fP, \fBerror\fP, \fBquiet\fP\&. Default: +\fBwarning\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-log\-file=LOG_FILE +Log file path. Default: /var/log/salt/master\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-log\-file\-level=LOG_LEVEL_LOGFILE +Logfile logging log level. One of \fBall\fP, \fBgarbage\fP, \fBtrace\fP, +\fBdebug\fP, \fBinfo\fP, \fBwarning\fP, \fBerror\fP, \fBquiet\fP\&. Default: +\fBwarning\fP\&. +.UNINDENT .SS See also .sp -\fBsalt\-api(1)\fP -\fBsalt\-call(1)\fP -\fBsalt\-cloud(1)\fP -\fBsalt\-cp(1)\fP -\fBsalt\-key(1)\fP -\fBsalt\-main(1)\fP +\fBsalt(1)\fP \fBsalt\-master(1)\fP \fBsalt\-minion(1)\fP -\fBsalt\-run(1)\fP -\fBsalt\-ssh(1)\fP -\fBsalt\-syndic(1)\fP .SS spm .SS \fBspm\fP .sp @@ -88216,8 +86154,13 @@ from the REST call. In the above example, assuming the REST call does not retur any additional ACLs, this will authenticate Fred via a REST call and allow him to run any execution module and all runners. .sp -The REST call should return a JSON object that maps to a regular eauth YAML structure -as above. +The REST call should return a JSON array that maps to a regular eauth YAML +structure of a user as above. +.INDENT 0.0 +.TP +.B salt.auth.rest.acl(username, **kwargs) +REST authorization +.UNINDENT .INDENT 0.0 .TP .B salt.auth.rest.auth(username, password) @@ -88225,7 +86168,8 @@ REST authentication .UNINDENT .INDENT 0.0 .TP -.B salt.auth.rest.rest_auth_setup() +.B salt.auth.rest.fetch(username, password) +Call the rest authentication endpoint .UNINDENT .SS salt.auth.sharedsecret .sp @@ -89895,7 +87839,7 @@ Validate the beacon configuration .SS salt.beacons.salt_monitor .sp A beacon to execute salt execution module functions. This beacon will fire only if the return data is "truthy". -The function return, funtion name and args and/or kwargs, will be passed as data in the event. +The function return, function name and args and/or kwargs, will be passed as data in the event. .sp The configuration can accept a list of salt functions to execute every interval. Make sure to allot enough time via \(aqinterval\(aq key to allow all salt functions to execute. @@ -90740,6 +88684,9 @@ Minion data cache plugin for Consul key/value data store. .sp New in version 2016.11.2. +.sp +Changed in version 3005.0: Timestamp/cache updated support added. + .INDENT 0.0 .TP .B depends @@ -90779,11 +88726,17 @@ consul.scheme: http consul.consistency: default consul.dc: dc1 consul.verify: True +consul.timestamp_suffix: .tstamp # Added in 3005.0 .ft P .fi .UNINDENT .UNINDENT .sp +In order to bring the cache APIs into conformity, in 3005.0 timestamp +information gets stored as a separate \fB{key}.tstamp\fP key/value. If your +existing functionality depends on being able to store normal keys with the +\fB\&.tstamp\fP suffix, override the \fBconsul.timestamp_suffix\fP default config. +.sp Related docs could be found in the \fI\%python\-consul documentation\fP\&. .sp To use the consul as a minion data cache backend, set the master \fBcache\fP config @@ -90823,12 +88776,21 @@ Return an iterable object containing all entries stored in the specified bank. .B salt.cache.consul.store(bank, key, data) Store a key value. .UNINDENT +.INDENT 0.0 +.TP +.B salt.cache.consul.updated(bank, key) +Return the Unix Epoch timestamp of when the key was last updated. Return +None if key is not found. +.UNINDENT .SS salt.cache.etcd_cache .sp Minion data cache plugin for Etcd key/value data store. .sp New in version 2018.3.0. +.sp +Changed in version 3005. + .sp It is up to the system administrator to set up and configure the Etcd infrastructure. All is needed for this plugin is a working Etcd agent @@ -90849,6 +88811,15 @@ pip install python\-etcd .UNINDENT .UNINDENT .sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +While etcd API v3 has been implemented in other places within salt, +etcd_cache does not support it at this time due to fundamental differences in +how the versions are designed and v3 not being compatible with the cache API. +.UNINDENT +.UNINDENT +.sp Optionally, depending on the Etcd agent configuration, the following values could be set in the master config. These are the defaults: .INDENT 0.0 @@ -90886,6 +88857,10 @@ cache: etcd .fi .UNINDENT .UNINDENT +.sp +In Phosphorus, ls/list was changed to always return the final name in the path. +This should only make a difference if you were directly using \fBls\fP on paths +that were more or less nested than, for example: \fB1/2/3/4\fP\&. .INDENT 0.0 .TP .B salt.cache.etcd_cache.contains(bank, key) @@ -90912,6 +88887,11 @@ bank. .B salt.cache.etcd_cache.store(bank, key, data) Store a key value. .UNINDENT +.INDENT 0.0 +.TP +.B salt.cache.etcd_cache.updated(bank, key) +Return Unix Epoch based timestamp of when the bank/key was updated. +.UNINDENT .SS salt.cache.localfs .sp Cache data in filesystem. @@ -90972,8 +88952,17 @@ New in version 2018.3.0. It is up to the system administrator to set up and configure the MySQL infrastructure. All is needed for this plugin is a working MySQL server. .sp -The module requires the \fIsalt_cache\fP database to exists but creates its own -table if needed. The keys are indexed using the \fIbank\fP and \fIetcd_key\fP columns. +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +The mysql.database and mysql.table_name will be directly added into certain +queries. Salt treats these as trusted input. +.UNINDENT +.UNINDENT +.sp +The module requires the database (default \fBsalt_cache\fP) to exist but creates +its own table if needed. The keys are indexed using the \fBbank\fP and +\fBetcd_key\fP columns. .sp To enable this cache plugin, the master will need the python client for MySQL installed. This can be easily installed with pip: @@ -90982,7 +88971,7 @@ MySQL installed. This can be easily installed with pip: .sp .nf .ft C -pip install python\-mysql +pip install pymysql .ft P .fi .UNINDENT @@ -91006,7 +88995,7 @@ mysql.table_name: cache .UNINDENT .UNINDENT .sp -Related docs could be found in the \fI\%python\-mysql documentation\fP\&. +Related docs can be found in the \fI\%python\-mysql documentation\fP\&. .sp To use the mysql as a minion data cache backend, set the master \fBcache\fP config value to \fBmysql\fP: @@ -91037,14 +89026,20 @@ Remove the key from the cache bank with all the key content. .UNINDENT .INDENT 0.0 .TP +.B salt.cache.mysql_cache.force_reconnect() +Force a reconnection to the MySQL database, by removing the client from +Salt\(aqs __context__. +.UNINDENT +.INDENT 0.0 +.TP .B salt.cache.mysql_cache.ls(bank) Return an iterable object containing all entries stored in the specified bank. .UNINDENT .INDENT 0.0 .TP -.B salt.cache.mysql_cache.run_query(conn, query, retries=3, args=None) -Get a cursor and run a query. Reconnect up to \fIretries\fP times if +.B salt.cache.mysql_cache.run_query(conn, query, args=None, retries=3) +Get a cursor and run a query. Reconnect up to \fBretries\fP times if needed. Returns: cursor, affected rows counter Raises: SaltCacheError, AttributeError, OperationalError @@ -91054,6 +89049,12 @@ Raises: SaltCacheError, AttributeError, OperationalError .B salt.cache.mysql_cache.store(bank, key, data) Store a key value. .UNINDENT +.INDENT 0.0 +.TP +.B salt.cache.mysql_cache.updated(bank, key) +Return the integer Unix epoch update timestamp of the specified bank and +key. +.UNINDENT .SS salt.cache.redis_cache .SS Redis .sp @@ -91061,6 +89062,9 @@ Redis plugin for the Salt caching subsystem. .sp New in version 2017.7.0. +.sp +Changed in version 3005. + .sp As Redis provides a simple mechanism for very fast key\-value store, in order to provide the necessary features for the Salt caching subsystem, the following @@ -91102,14 +89106,16 @@ the following hierarchy will be built: .UNINDENT .UNINDENT .sp -There are three types of keys stored: +There are four types of keys stored: .INDENT 0.0 .IP \(bu 2 -\fB$BANK_*\fP is a Redis SET containing the list of banks under the current bank +\fB$BANK_*\fP is a Redis SET containing the list of banks under the current bank. .IP \(bu 2 -\fB$BANKEYS_*\fP is a Redis SET containing the list of keys under the current bank +\fB$BANKEYS_*\fP is a Redis SET containing the list of keys under the current bank. .IP \(bu 2 -\fB$KEY_*\fP keeps the value of the key +\fB$KEY_*\fP keeps the value of the key. +.IP \(bu 2 +\fB$TSTAMP_*\fP stores the last updated timestamp of the key. .UNINDENT .sp These prefixes and the separator can be adjusted using the configuration options: @@ -91119,11 +89125,17 @@ These prefixes and the separator can be adjusted using the configuration options The prefix used for the name of the Redis key storing the list of sub\-banks. .TP .B bank_keys_prefix: \fB$BANKEYS\fP -The prefix used for the name of the Redis keyt storing the list of keys under a certain bank. +The prefix used for the name of the Redis key storing the list of keys under a certain bank. .TP .B key_prefix: \fB$KEY\fP The prefix of the Redis keys having the value of the keys to be cached under a certain bank. +.TP +.B timestamp_prefix: \fB$TSTAMP\fP +The prefix for the last modified timestamp for keys. +.sp +New in version 3005. + .TP .B separator: \fB_\fP The separator between the prefix and the key body. @@ -91207,6 +89219,7 @@ cache.redis.password: my pass cache.redis.bank_prefix: #BANK cache.redis.bank_keys_prefix: #BANKEYS cache.redis.key_prefix: #KEY +cache.redis.timestamp_prefix: #TICKS cache.redis.separator: \(aq@\(aq .ft P .fi @@ -91274,6 +89287,7 @@ should not change as the user needs to explicitly allow Salt inject scripts in t .INDENT 0.0 .TP .B salt.cache.redis_cache.init_kwargs(kwargs) +Effectively a noop. Return an empty dictionary. .UNINDENT .INDENT 0.0 .TP @@ -91285,6 +89299,12 @@ Lists entries stored in the specified bank. .B salt.cache.redis_cache.store(bank, key, data) Store the data in a Redis key. .UNINDENT +.INDENT 0.0 +.TP +.B salt.cache.redis_cache.updated(bank, key) +Return the Unix Epoch timestamp of when the key was last updated. Return +None if key is not found. +.UNINDENT .SS cloud modules .TS center; @@ -91762,7 +89782,18 @@ Changed in version 2019.2.0. .sp The Azure ARM cloud module is used to control access to Microsoft Azure Resource Manager +.sp +\fBWARNING:\fP .INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B maintainer +<\fI\%devops@eitr.tech\fP> .TP .B depends .INDENT 7.0 @@ -92053,7 +90084,7 @@ List virtual networks. .UNINDENT .INDENT 0.0 .TP -.B salt.cloud.clouds.azurearm.request_instance(vm_) +.B salt.cloud.clouds.azurearm.request_instance(vm_, kwargs=None) Request a VM from Azure. .UNINDENT .INDENT 0.0 @@ -95033,14 +93064,17 @@ my\-hetzner\-cloud\-config: .INDENT 0.0 .TP .B salt.cloud.clouds.hetzner.avail_images(call=None) +Return a dictionary of available images .UNINDENT .INDENT 0.0 .TP .B salt.cloud.clouds.hetzner.avail_locations(call=None) +Return a dictionary of available locations .UNINDENT .INDENT 0.0 .TP .B salt.cloud.clouds.hetzner.avail_sizes(call=None) +Return a dictionary of available VM sizes .UNINDENT .INDENT 0.0 .TP @@ -95077,14 +93111,17 @@ Warn if dependencies aren\(aqt met. .INDENT 0.0 .TP .B salt.cloud.clouds.hetzner.list_nodes(call=None) +Return a dictionary of existing VMs in the current project, containing basic details of each VM .UNINDENT .INDENT 0.0 .TP .B salt.cloud.clouds.hetzner.list_nodes_full(call=None) +Return a dictionary of existing VMs in the current project, containing full details per VM .UNINDENT .INDENT 0.0 .TP .B salt.cloud.clouds.hetzner.list_ssh_keys(call=None) +Return a dictionary of available SSH keys configured in the current project .UNINDENT .INDENT 0.0 .TP @@ -95123,6 +93160,7 @@ salt\-cloud \-a resize mymachine size=... .INDENT 0.0 .TP .B salt.cloud.clouds.hetzner.show_instance(name, call=None) +Return the details of a specific VM .UNINDENT .INDENT 0.0 .TP @@ -96767,6 +94805,15 @@ Show the details from the provider concerning an instance .SS Azure Cloud Module .sp The Azure cloud module is used to control access to Microsoft Azure +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 due to +the deprecation of the "Classic" API for Azure. Please migrate to +\fI\%Azure Resource Manager by March 1, 2023\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B depends @@ -97204,6 +95251,11 @@ container\(aqs lease is active and matches this ID. .UNINDENT .INDENT 0.0 .TP +.B salt.cloud.clouds.msazure.deprecation_message(function) +Decorator wrapper to warn about msazure deprecation +.UNINDENT +.INDENT 0.0 +.TP .B salt.cloud.clouds.msazure.destroy(name, conn=None, call=None, kwargs=None) Destroy a VM .sp @@ -102857,6 +100909,11 @@ Get VM configuration .UNINDENT .INDENT 0.0 .TP +.B salt.cloud.clouds.proxmox.ignore_cidr(vm_, ip) +Return True if we are to ignore the specified IP. +.UNINDENT +.INDENT 0.0 +.TP .B salt.cloud.clouds.proxmox.list_nodes(call=None) Return a list of the VMs that are managed by the provider .sp @@ -102908,6 +100965,12 @@ salt\-cloud \-S my\-proxmox\-config .UNINDENT .INDENT 0.0 .TP +.B salt.cloud.clouds.proxmox.preferred_ip(vm_, ips) +Return either an \(aqipv4\(aq (default) or \(aqipv6\(aq address depending on \(aqprotocol\(aq option. +The list of \(aqipv4\(aq IPs is filtered by ignore_cidr() to remove any unreachable private addresses. +.UNINDENT +.INDENT 0.0 +.TP .B salt.cloud.clouds.proxmox.query(conn_type, option, post_data=None) Execute the HTTP request to the API .UNINDENT @@ -106975,6 +105038,293 @@ salt\-cloud \-a vif_list xenvm01 .UNINDENT .UNINDENT .UNINDENT +.SS Configuring Salt +.sp +Salt configuration is very simple. The default configuration for the +master will work for most installations and the only requirement for +setting up a minion is to set the location of the master in the minion +configuration file. +.sp +The configuration files will be installed to \fB/etc/salt\fP and are named +after the respective components, \fB/etc/salt/master\fP, and +\fB/etc/salt/minion\fP\&. +.SS Master Configuration +.sp +By default the Salt master listens on ports 4505 and 4506 on all +interfaces (0.0.0.0). To bind Salt to a specific IP, redefine the +"interface" directive in the master configuration file, typically +\fB/etc/salt/master\fP, as follows: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +\- #interface: 0.0.0.0 ++ interface: 10.0.0.1 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +After updating the configuration file, restart the Salt master. +See the master configuration reference +for more details about other configurable options. +.SS Minion Configuration +.sp +Although there are many Salt Minion configuration options, configuring +a Salt Minion is very simple. By default a Salt Minion will +try to connect to the DNS name "salt"; if the Minion is able to +resolve that name correctly, no configuration is needed. +.sp +If the DNS name "salt" does not resolve to point to the correct +location of the Master, redefine the "master" directive in the minion +configuration file, typically \fB/etc/salt/minion\fP, as follows: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +\- #master: salt ++ master: 10.0.0.1 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +After updating the configuration file, restart the Salt minion. +See the minion configuration reference +for more details about other configurable options. +.SS Proxy Minion Configuration +.sp +A proxy minion emulates the behaviour of a regular minion +and inherits their options. +.sp +Similarly, the configuration file is \fB/etc/salt/proxy\fP and the proxy +tries to connect to the DNS name "salt". +.sp +In addition to the regular minion options, +there are several proxy\-specific \- see the +proxy minion configuration reference\&. +.SS Running Salt +.INDENT 0.0 +.IP 1. 3 +Start the master in the foreground (to daemonize the process, pass the +\fB\-d flag\fP): +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-master +.ft P +.fi +.UNINDENT +.UNINDENT +.IP 2. 3 +Start the minion in the foreground (to daemonize the process, pass the +\fB\-d flag\fP): +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-minion +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.IP "Having trouble?" +.sp +The simplest way to troubleshoot Salt is to run the master and minion in +the foreground with \fBlog level\fP set to \fBdebug\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-master \-\-log\-level=debug +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +For information on salt\(aqs logging system please see the logging +document\&. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.IP "Run as an unprivileged (non\-root) user" +.sp +To run Salt as another user, set the \fBuser\fP parameter in the +master config file. +.sp +Additionally, ownership, and permissions need to be set such that the +desired user can read from and write to the following directories (and +their subdirectories, where applicable): +.INDENT 0.0 +.IP \(bu 2 +/etc/salt +.IP \(bu 2 +/var/cache/salt +.IP \(bu 2 +/var/log/salt +.IP \(bu 2 +/var/run/salt +.UNINDENT +.sp +More information about running salt as a non\-privileged user can be found +here\&. +.UNINDENT +.UNINDENT +.sp +There is also a full troubleshooting guide +available. +.SS Key Identity +.sp +Salt provides commands to validate the identity of your Salt master +and Salt minions before the initial key exchange. Validating key identity helps +avoid inadvertently connecting to the wrong Salt master, and helps prevent +a potential MiTM attack when establishing the initial connection. +.SS Master Key Fingerprint +.sp +Print the master key fingerprint by running the following command on the Salt master: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-key \-F master +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Copy the \fBmaster.pub\fP fingerprint from the \fILocal Keys\fP section, and then set this value +as the \fBmaster_finger\fP in the minion configuration file. Save the configuration +file and then restart the Salt minion. +.SS Minion Key Fingerprint +.sp +Run the following command on each Salt minion to view the minion key fingerprint: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt\-call \-\-local key.finger +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Compare this value to the value that is displayed when you run the +\fBsalt\-key \-\-finger \fP command on the Salt master. +.SS Key Management +.sp +Salt uses AES encryption for all communication between the Master and +the Minion. This ensures that the commands sent to the Minions cannot +be tampered with, and that communication between Master and Minion is +authenticated through trusted, accepted keys. +.sp +Before commands can be sent to a Minion, its key must be accepted on +the Master. Run the \fBsalt\-key\fP command to list the keys known to +the Salt Master: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[root@master ~]# salt\-key \-L +Unaccepted Keys: +alpha +bravo +charlie +delta +Accepted Keys: +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +This example shows that the Salt Master is aware of four Minions, but none of +the keys has been accepted. To accept the keys and allow the Minions to be +controlled by the Master, again use the \fBsalt\-key\fP command: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[root@master ~]# salt\-key \-A +[root@master ~]# salt\-key \-L +Unaccepted Keys: +Accepted Keys: +alpha +bravo +charlie +delta +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The \fBsalt\-key\fP command allows for signing keys individually or in bulk. The +example above, using \fB\-A\fP bulk\-accepts all pending keys. To accept keys +individually use the lowercase of the same option, \fB\-a keyname\fP\&. +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +salt\-key manpage +.UNINDENT +.UNINDENT +.SS Sending Commands +.sp +Communication between the Master and a Minion may be verified by running +the \fBtest.version\fP command: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[root@master ~]# salt alpha test.version +alpha: + 2018.3.4 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Communication between the Master and all Minions may be tested in a +similar way: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[root@master ~]# salt \(aq*\(aq test.version +alpha: + 2018.3.4 +bravo: + 2018.3.4 +charlie: + 2018.3.4 +delta: + 2018.3.4 +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Each of the Minions should send a \fB2018.3.4\fP response as shown above, +or any other salt version installed. +.SS What\(aqs Next? +.sp +Understanding targeting is important. From there, depending +on the way you wish to use Salt, you should also proceed to learn about +Remote Execution and Configuration Management\&. .SS engine modules .TS center; @@ -109735,6 +108085,12 @@ Grains from cloud metadata servers at 169.254.169.254 T} _ T{ +\fBmetadata_gce\fP +T} T{ +Grains from cloud metadata servers at 169.254.169.254 in google cloud engine +T} +_ +T{ \fBminion_process\fP T} T{ Set grains describing the minion process. @@ -110268,6 +108624,36 @@ metadata_server_grains: True .TP .B salt.grains.metadata.metadata() .UNINDENT +.SS salt.grains.metadata_gce +.sp +Grains from cloud metadata servers at 169.254.169.254 in +google cloud engine +.sp +New in version 3005.0. + +.INDENT 0.0 +.TP +.B depends +requests +.UNINDENT +.sp +To enable these grains that pull from the \fI\%http://169.254.169.254/computeMetadata/v1/\fP +metadata server set \fImetadata_server_grains: True\fP in the minion config. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +metadata_server_grains: True +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.grains.metadata_gce.metadata() +main function to output grains into loader +.UNINDENT .SS salt.grains.minion_process .sp Set grains describing the minion process. @@ -113630,6 +112016,12 @@ checkrestart functionality for Debian and Red Hat Based systems T} _ T{ +\fBrestconf\fP +T} T{ +Execution module for RESTCONF Proxy minions +T} +_ +T{ \fBret\fP T} T{ Module to integrate with the returner system and retrieve data sent to a salt returner @@ -113972,6 +112364,12 @@ Support for Apache T} _ T{ +\fBsuse_ip\fP +T} T{ +The networking module for SUSE based distros +T} +_ +T{ \fBsvn\fP T} T{ Subversion SCM @@ -114064,7 +112462,7 @@ _ T{ \fBtest_virtual\fP T} T{ -Module for running arbitrary tests with a __virtual__ function +Module for testing that a __virtual__ function returning False will not be available via the Salt Loader. T} _ T{ @@ -114380,6 +112778,12 @@ Manage the shadow file T} _ T{ +\fBwin_shortcut\fP +T} T{ +Execution module for creating shortcuts on Windows. +T} +_ +T{ \fBwin_smtp_server\fP T} T{ Module for managing IIS SMTP server configuration on Windows servers. @@ -114482,6 +112886,12 @@ Module for Sending Messages via XMPP (a.k.a. T} _ T{ +\fByaml\fP +T} T{ +Yaml helper module for troubleshooting yaml +T} +_ +T{ \fByumpkg\fP T} T{ Support for YUM/DNF @@ -115071,12 +113481,15 @@ error similar to \fI\(aqpkg.install\(aq is not available\fP), see here\&. This function is an alias of \fBlatest_version\fP\&. .INDENT 7.0 .INDENT 3.5 -Return the latest version of the named fileset/rpm package available for +Return the latest available version of the named fileset/rpm package available for upgrade or installation. If more than one fileset/rpm package name is specified, a dict of name/version pairs is returned. .sp If the latest version of a given fileset/rpm package is already installed, an empty string will be returned for that package. +.sp +Changed in version 3005. + .sp CLI Example: .INDENT 0.0 @@ -115090,10 +113503,13 @@ salt \(aq*\(aq pkg.latest_version ... .fi .UNINDENT .UNINDENT +.INDENT 0.0 +.TP +.B Note: currently only functional for rpm packages due to filesets do not have a specific location to check +Requires yum of dnf available in order to query a repository +.UNINDENT .sp -NOTE: Repositories are not presently supported for AIX. -This function will always return an empty string for a given -fileset/rpm package. +This function will always return an empty string for unfound fileset/rpm package. .UNINDENT .UNINDENT .UNINDENT @@ -115101,6 +113517,16 @@ fileset/rpm package. .TP .B salt.modules.aixpkg.install(name=None, refresh=False, pkgs=None, version=None, test=False, **kwargs) Install the named fileset(s)/rpm package(s). +.sp +.INDENT 7.0 +Changed in version 3005: .TP +.B preference to install rpm packages are to use in the following order: +/opt/freeware/bin/dnf +/opt/freeware/bin/yum +/usr/bin/yum +/usr/bin/rpm +.UNINDENT + .INDENT 7.0 .TP .B name @@ -115108,10 +113534,6 @@ The name of the fileset or rpm package to be installed. .TP .B refresh Whether or not to update the yum database before executing. -.UNINDENT -.sp -Multiple Package Installation Options: -.INDENT 7.0 .TP .B pkgs A list of filesets and/or rpm packages to install. @@ -115123,7 +113545,7 @@ Install a specific version of a fileset/rpm package. (Unused at present). .TP .B test -Verify that command functions correctly: +Verify that command functions correctly. .UNINDENT .sp Returns a dict containing the new fileset(s)/rpm package(s) names and versions: @@ -115146,9 +113568,12 @@ CLI Example: salt \(aq*\(aq pkg.install /stage/middleware/AIX/bash\-4.2\-3.aix6.1.ppc.rpm salt \(aq*\(aq pkg.install /stage/middleware/AIX/bash\-4.2\-3.aix6.1.ppc.rpm refresh=True salt \(aq*\(aq pkg.install /stage/middleware/AIX/VIOS2211_update/tpc_4.1.1.85.bff +salt \(aq*\(aq pkg.install /cecc/repos/aix72/TL3/BASE/installp/ppc/bos.rte.printers_7.2.2.0.bff salt \(aq*\(aq pkg.install /stage/middleware/AIX/Xlc/usr/sys/inst.images/xlC.rte salt \(aq*\(aq pkg.install /stage/middleware/AIX/Firefox/ppc\-AIX53/Firefox.base +salt \(aq*\(aq pkg.install /cecc/repos/aix72/TL3/BASE/installp/ppc/bos.net salt \(aq*\(aq pkg.install pkgs=\(aq["foo", "bar"]\(aq +salt \(aq*\(aq pkg.install libxml2 .ft P .fi .UNINDENT @@ -115157,12 +113582,15 @@ salt \(aq*\(aq pkg.install pkgs=\(aq["foo", "bar"]\(aq .INDENT 0.0 .TP .B salt.modules.aixpkg.latest_version(*names, **kwargs) -Return the latest version of the named fileset/rpm package available for +Return the latest available version of the named fileset/rpm package available for upgrade or installation. If more than one fileset/rpm package name is specified, a dict of name/version pairs is returned. .sp If the latest version of a given fileset/rpm package is already installed, an empty string will be returned for that package. +.sp +Changed in version 3005. + .sp CLI Example: .INDENT 7.0 @@ -115176,10 +113604,13 @@ salt \(aq*\(aq pkg.latest_version ... .fi .UNINDENT .UNINDENT +.INDENT 7.0 +.TP +.B Note: currently only functional for rpm packages due to filesets do not have a specific location to check +Requires yum of dnf available in order to query a repository +.UNINDENT .sp -NOTE: Repositories are not presently supported for AIX. -This function will always return an empty string for a given -fileset/rpm package. +This function will always return an empty string for unfound fileset/rpm package. .UNINDENT .INDENT 0.0 .TP @@ -115218,7 +113649,15 @@ Remove specified fileset(s)/rpm package(s). The name of the fileset or rpm package to be deleted. .UNINDENT .sp -Multiple Package Options: +.INDENT 7.0 +Changed in version 3005: .TP +.B preference to install rpm packages are to use in the following order: +/opt/freeware/bin/dnf +/opt/freeware/bin/yum +/usr/bin/yum +/usr/bin/rpm +.UNINDENT + .INDENT 7.0 .TP .B pkgs @@ -115249,6 +113688,9 @@ salt \(aq*\(aq pkg.remove pkgs=\(aq["foo", "bar"]\(aq .TP .B salt.modules.aixpkg.upgrade_available(name, **kwargs) Check whether or not an upgrade is available for a given package +.sp +Changed in version 3005. + .sp CLI Example: .INDENT 7.0 @@ -115261,11 +113703,21 @@ salt \(aq*\(aq pkg.upgrade_available .fi .UNINDENT .UNINDENT +.INDENT 7.0 +.TP +.B Note: currently only functional for rpm packages due to filesets do not have a specific location to check +Requires yum of dnf available in order to query a repository +.UNINDENT .UNINDENT .INDENT 0.0 .TP .B salt.modules.aixpkg.version(*names, **kwargs) -Common interface for obtaining the version of installed fileset/rpm package. +Return the current installed version of the named fileset/rpm package +If more than one fileset/rpm package name is specified a dict of +name/version pairs is returned. +.sp +Changed in version 3005. + .sp CLI Example: .INDENT 7.0 @@ -115273,8 +113725,8 @@ CLI Example: .sp .nf .ft C -salt \(aq*\(aq pkg.version vim -salt \(aq*\(aq pkg.version foo bar baz +salt \(aq*\(aq pkg.latest_version +salt \(aq*\(aq pkg.latest_version ... .ft P .fi .UNINDENT @@ -115697,7 +114149,7 @@ CLI Example: .sp .nf .ft C -salt \(aqansiblehost\(aq ansible.playbook playbook=/srv/playbooks/play.yml +salt \(aqansiblehost\(aq ansible.playbooks playbook=/srv/playbooks/play.yml .ft P .fi .UNINDENT @@ -116914,20 +115366,28 @@ Return the repo line for the sources file .B class salt.modules.aptpkg.SourcesList .INDENT 7.0 .TP -.B add(type, uri, dist, orig_comps, architectures) +.B add(type, uri, dist, orig_comps, architectures, signedby) +.UNINDENT +.INDENT 7.0 +.TP +.B add_file(file) +Add the lines of a file to self.list .UNINDENT .INDENT 7.0 .TP .B remove(source) +remove a source from the list of sources .UNINDENT .INDENT 7.0 .TP .B save() +write all of the sources from the list of sources +to the file. .UNINDENT .UNINDENT .INDENT 0.0 .TP -.B salt.modules.aptpkg.add_repo_key(path=None, text=None, keyserver=None, keyid=None, saltenv=\(aqbase\(aq) +.B salt.modules.aptpkg.add_repo_key(path=None, text=None, keyserver=None, keyid=None, saltenv=\(aqbase\(aq, aptkey=True, keydir=None, keyfile=None) New in version 2017.7.0. .sp @@ -116946,6 +115406,17 @@ Add a repo key using \fBapt\-key add\fP\&. \fBkeyid\fP (\fI\%str\fP) \-\- The key id of the repo key to add. .IP \(bu 2 \fBsaltenv\fP (\fI\%str\fP) \-\- The environment the key file resides in. +.IP \(bu 2 +\fBaptkey\fP (\fI\%bool\fP) \-\- Use the binary apt\-key. +.IP \(bu 2 +\fBkeydir\fP (\fI\%str\fP) \-\- The directory path to save keys. The default directory +is /etc/apt/keyrings/ which is the recommended path +for adding third party keys. This argument is only used +when aptkey is False. +.IP \(bu 2 +\fBkeyfile\fP (\fI\%str\fP) \-\- The name of the key to add. This is only required when +aptkey is False and you are using a keyserver. This +argument is only used when aptkey is False. .UNINDENT .TP .B Returns @@ -116955,6 +115426,15 @@ A boolean representing whether the repo key was added. \fI\%bool\fP .UNINDENT .sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 +The apt\-key binary is deprecated and will last be available +in Debian 11 and Ubuntu 22.04. It is recommended to use aptkey=False +when using this module. +.UNINDENT +.UNINDENT +.sp CLI Examples: .INDENT 7.0 .INDENT 3.5 @@ -117076,7 +115556,7 @@ salt \(aq*\(aq pkg.del_repo "myrepo definition" .UNINDENT .INDENT 0.0 .TP -.B salt.modules.aptpkg.del_repo_key(name=None, **kwargs) +.B salt.modules.aptpkg.del_repo_key(name=None, aptkey=True, keydir=None, **kwargs) New in version 2015.8.0. .sp @@ -117101,6 +115581,23 @@ Setting this option to \fBTrue\fP requires that the \fBname\fP param also be passed. .UNINDENT .UNINDENT +.TP +.B aptkey +Use the binary apt\-key. +.TP +.B keydir +The directory path to save keys. The default directory +is /etc/apt/keyrings/ which is the recommended path +for adding third party keys. +.UNINDENT +.sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 +The apt\-key binary is deprecated and will last be available +in Debian 11 and Ubuntu 22.04. It is recommended to use aptkey=False +when using this module. +.UNINDENT .UNINDENT .sp CLI Examples: @@ -117189,11 +115686,16 @@ salt \(aq*\(aq pkg.get_repo "myrepo definition" .UNINDENT .INDENT 0.0 .TP -.B salt.modules.aptpkg.get_repo_keys() +.B salt.modules.aptpkg.get_repo_keys(aptkey=True, keydir=None) New in version 2017.7.0. .sp List known repo key details. +:param bool aptkey: Use the binary apt\-key. +:param str keydir: The directory path to save keys. The default directory +is /etc/apt/keyrings/ which is the recommended path +for adding third party keys. This argument is only used +when aptkey is False. .INDENT 7.0 .TP .B Returns @@ -117720,7 +116222,7 @@ salt \(aq*\(aq pkg.list_upgrades .UNINDENT .INDENT 0.0 .TP -.B salt.modules.aptpkg.mod_repo(repo, saltenv=\(aqbase\(aq, **kwargs) +.B salt.modules.aptpkg.mod_repo(repo, saltenv=\(aqbase\(aq, aptkey=True, **kwargs) Modify one or more values for a repo. If the repo does not exist, it will be created, so long as the definition is well formed. For Ubuntu the \fBppa:/repo\fP format is acceptable. \fBppa:\fP format can only be @@ -118230,6 +116732,12 @@ Always install the new version of any configuration files. .sp New in version 2015.8.0. +.TP +.B allow_downgrades +Allow apt to downgrade packages without a prompt. +.sp +New in version 3005. + .UNINDENT .sp CLI Example: @@ -118584,9 +117092,12 @@ salt \(aq*\(aq archive.gzip /tmp/sourcefile.txt options=\(aq\-9 \-\-verbose\(aq .UNINDENT .INDENT 0.0 .TP -.B salt.modules.archive.is_encrypted(name, clean=False, saltenv=\(aqbase\(aq, source_hash=None) +.B salt.modules.archive.is_encrypted(name, clean=False, saltenv=\(aqbase\(aq, source_hash=None, use_etag=False) New in version 2016.11.0. +.sp +Changed in version 3005. + .sp Returns \fBTrue\fP if the zip archive is password\-protected, \fBFalse\fP if not. If the specified file is not a ZIP archive, an error will be raised. @@ -118623,6 +117134,16 @@ hash. .sp New in version 2018.3.0. +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .sp CLI Examples: @@ -118644,11 +117165,11 @@ salt \(aq*\(aq archive.is_encrypted ftp://10.1.2.3/foo.zip .UNINDENT .INDENT 0.0 .TP -.B salt.modules.archive.list_(name, archive_format=None, options=None, strip_components=None, clean=False, verbose=False, saltenv=\(aqbase\(aq, source_hash=None) +.B salt.modules.archive.list_(name, archive_format=None, options=None, strip_components=None, clean=False, verbose=False, saltenv=\(aqbase\(aq, source_hash=None, use_etag=False) New in version 2016.11.0. .sp -Changed in version 2016.11.2: The \fI\%rarfile\fP Python module is now supported for listing the contents of +Changed in version 2016.11.2,3005: The \fI\%rarfile\fP Python module is now supported for listing the contents of rar archives. This is necessary on minions with older releases of the \fBrar\fP CLI tool, which do not support listing the contents in a parsable format. @@ -118769,6 +117290,16 @@ hash. .sp New in version 2018.3.0. +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .sp CLI Examples: @@ -120834,10 +119365,18 @@ Azure (ARM) Compute Execution Module .sp New in version 2019.2.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer -<\fI\%devops@decisionlab.io\fP> +<\fI\%devops@eitr.tech\fP> .TP .B maturity new @@ -121443,6 +119982,14 @@ Azure (ARM) DNS Execution Module .sp New in version 3000. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer @@ -121879,10 +120426,18 @@ Azure (ARM) Network Execution Module .sp New in version 2019.2.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer -<\fI\%devops@decisionlab.io\fP> +<\fI\%devops@eitr.tech\fP> .TP .B maturity new @@ -123844,10 +122399,18 @@ Azure (ARM) Resource Execution Module .sp New in version 2019.2.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer -<\fI\%devops@decisionlab.io\fP> +<\fI\%devops@eitr.tech\fP> .TP .B maturity new @@ -129346,21 +127909,6 @@ salt myminion boto3_route53.associate_vpc_with_hosted_zone N .UNINDENT .INDENT 0.0 .TP -.B salt.modules.boto3_route53.aws_encode(x) -An implementation of the encoding required to support AWS\(aqs domain name -rules defined \fI\%here\fP: -.sp -While AWS\(aqs documentation specifies individual ASCII characters which need -to be encoded, we instead just try to force the string to one of -escaped unicode or idna depending on whether there are non\-ASCII characters -present. -.sp -This means that we support things like ドメイン.テスト as a domain name string. -.sp -More information about IDNA encoding in python is found \fI\%here\fP: -.UNINDENT -.INDENT 0.0 -.TP .B salt.modules.boto3_route53.change_resource_record_sets(HostedZoneId=None, Name=None, PrivateZone=None, ChangeBatch=None, region=None, key=None, keyid=None, profile=None) See the \fI\%AWS Route53 API docs\fP as well as the \fI\%Boto3 documentation\fP for all the details... .sp @@ -144529,7 +143077,7 @@ salt myminion boto_vpc.replace_route_table_association \(aqrtbassoc\-d8ccddba\(a .UNINDENT .INDENT 0.0 .TP -.B salt.modules.boto_vpc.request_vpc_peering_connection(requester_vpc_id=None, requester_vpc_name=None, peer_vpc_id=None, peer_vpc_name=None, name=None, peer_owner_id=None, region=None, key=None, keyid=None, profile=None, dry_run=False) +.B salt.modules.boto_vpc.request_vpc_peering_connection(requester_vpc_id=None, requester_vpc_name=None, peer_vpc_id=None, peer_vpc_name=None, name=None, peer_owner_id=None, peer_region=None, region=None, key=None, keyid=None, profile=None, dry_run=False) Request a VPC peering connection between two VPCs. .sp New in version 2016.11.0. @@ -144548,8 +143096,8 @@ another account. Exclusive with peer_vpc_name. .TP .B peer_vpc_name Name tag of the VPC to create VPC peering connection with. This can only -be a VPC in the same account, else resolving it into a vpc ID will almost -certainly fail. Exclusive with peer_vpc_id. +be a VPC in the same account and same region, else resolving it into a +vpc ID will almost certainly fail. Exclusive with peer_vpc_id. .TP .B name The name to use for this VPC peering connection. @@ -144557,6 +143105,13 @@ The name to use for this VPC peering connection. .B peer_owner_id ID of the owner of the peer VPC. Defaults to your account ID, so a value is required if peering with a VPC in a different account. +.TP +.B peer_region +Region of peer VPC. For inter\-region vpc peering connections. Not required +for intra\-region peering connections. +.sp +New in version 3005. + .TP .B region Region to connect to. @@ -151734,7 +150289,7 @@ salt \(aq*\(aq cmd.has_exec cat .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.powershell(cmd, cwd=None, stdin=None, runas=None, shell=\(aqpowershell\(aq, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, password=None, depth=None, encode_cmd=False, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.powershell(cmd, cwd=None, stdin=None, runas=None, shell=\(aqpowershell\(aq, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, password=None, depth=None, encode_cmd=False, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute the passed PowerShell command and return the output as a dictionary. .sp Other \fBcmd.*\fP functions (besides \fBcmd.powershell_all\fP) @@ -152019,7 +150574,7 @@ salt \(aq*\(aq cmd.powershell "$PSVersionTable.CLRVersion" .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.powershell_all(cmd, cwd=None, stdin=None, runas=None, shell=\(aqpowershell\(aq, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, quiet=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, password=None, depth=None, encode_cmd=False, force_list=False, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.powershell_all(cmd, cwd=None, stdin=None, runas=None, shell=\(aqpowershell\(aq, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, quiet=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, password=None, depth=None, encode_cmd=False, force_list=False, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute the passed PowerShell command and return a dictionary with a result field representing the output of the command, as well as other fields showing us what the PowerShell invocation wrote to \fBstderr\fP, the process @@ -152382,7 +150937,7 @@ salt \(aq*\(aq cmd.powershell_all "dir mydirectory" force_list=True .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.retcode(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, clean_env=False, template=None, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, password=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.retcode(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, clean_env=False, template=None, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, password=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute a shell command and return the command\(aqs return code. .INDENT 7.0 .TP @@ -152641,7 +151196,7 @@ salt \(aq*\(aq cmd.retcode "grep f" stdin=\(aqone\entwo\enthree\enfour\enfive\en .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.run(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, bg=False, password=None, encoded_cmd=False, raise_err=False, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.run(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, bg=False, password=None, encoded_cmd=False, raise_err=False, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute the passed command and return the output as a string .INDENT 7.0 .TP @@ -153022,7 +151577,7 @@ salt \(aq*\(aq cmd.run cmd=\(aqsed \-e s/=/:/g\(aq .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.run_all(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, redirect_stderr=False, password=None, encoded_cmd=False, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.run_all(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, redirect_stderr=False, password=None, encoded_cmd=False, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute the passed command and return a dict of return data .INDENT 7.0 .TP @@ -153365,7 +151920,7 @@ salt \(aq*\(aq cmd.run_all "grep f" stdin=\(aqone\entwo\enthree\enfour\enfive\en .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.run_bg(cmd, cwd=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, clean_env=False, template=None, umask=None, timeout=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.run_bg(cmd, cwd=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, clean_env=False, template=None, umask=None, timeout=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) New in version 2016.3.0. .sp @@ -153666,7 +152221,7 @@ salt \(aq*\(aq cmd.run_bg cmd=\(aqls \-lR / | sed \-e s/=/:/g > /tmp/dontwait\(a .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.run_chroot(root, cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=True, binds=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqquiet\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, bg=False, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.run_chroot(root, cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=True, binds=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqquiet\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, bg=False, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) New in version 2014.7.0. .sp @@ -153887,7 +152442,7 @@ salt \(aq*\(aq cmd.run_chroot /var/lib/lxc/container_name/rootfs \(aqsh /tmp/boo .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.run_stderr(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.run_stderr(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute a command and only return the standard error .INDENT 7.0 .TP @@ -154164,7 +152719,7 @@ salt \(aq*\(aq cmd.run_stderr "grep f" stdin=\(aqone\entwo\enthree\enfour\enfive .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.run_stdout(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.run_stdout(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute a command, and only return the standard out .INDENT 7.0 .TP @@ -154441,7 +152996,7 @@ salt \(aq*\(aq cmd.run_stdout "grep f" stdin=\(aqone\entwo\enthree\enfour\enfive .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.script(source, args=None, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, template=None, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, saltenv=\(aqbase\(aq, use_vt=False, bg=False, password=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.script(source, args=None, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, template=None, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, saltenv=None, use_vt=False, bg=False, password=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Download a script from a remote location and execute the script locally. The script can be located on the salt master file server or on an HTTP/FTP server. @@ -154475,8 +153030,7 @@ salt myminion cmd.script salt://foo.sh "arg1 \(aqarg two\(aq arg3" .IP \(bu 2 \fBcwd\fP (\fI\%str\fP) \-\- The directory from which to execute the command. Defaults -to the home directory of the user specified by \fBrunas\fP (or the user -under which Salt is running if \fBrunas\fP is not specified). +to the directory returned from Python\(aqs tempfile.mkstemp. .IP \(bu 2 \fBstdin\fP (\fI\%str\fP) \-\- A string of standard input can be specified for the command to be run using the \fBstdin\fP parameter. This can be useful in @@ -154718,7 +153272,7 @@ salt \(aq*\(aq cmd.script salt://scripts/runme.sh stdin=\(aqone\entwo\enthree\en .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.script_retcode(source, args=None, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, python_shell=None, env=None, template=\(aqjinja\(aq, umask=None, timeout=None, reset_system_locale=True, saltenv=\(aqbase\(aq, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, use_vt=False, password=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.script_retcode(source, args=None, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, python_shell=None, env=None, template=\(aqjinja\(aq, umask=None, timeout=None, reset_system_locale=True, saltenv=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, use_vt=False, password=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Download a script from a remote location and execute the script locally. The script can be located on the salt master file server or on an HTTP/FTP server. @@ -154943,7 +153497,7 @@ salt \(aq*\(aq cmd.script_retcode salt://scripts/runme.sh stdin=\(aqone\entwo\en .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cmdmod.shell(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/bash\(aq, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=\(aqbase\(aq, use_vt=False, bg=False, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) +.B salt.modules.cmdmod.shell(cmd, cwd=None, stdin=None, runas=None, group=None, shell=\(aq/bin/sh\(aq, env=None, clean_env=False, template=None, rstrip=True, umask=None, output_encoding=None, output_loglevel=\(aqdebug\(aq, log_callback=None, hide_output=False, timeout=None, reset_system_locale=True, ignore_retcode=False, saltenv=None, use_vt=False, bg=False, password=None, prepend_path=None, success_retcodes=None, success_stdout=None, success_stderr=None, **kwargs) Execute the passed command and return the output as a string. .sp New in version 2015.5.0. @@ -157649,9 +156203,12 @@ salt myminion container_resource.run mycontainer \(aqps aux\(aq container_type=d Minion side functions for salt\-cp .INDENT 0.0 .TP -.B salt.modules.cp.cache_dest(url, saltenv=\(aqbase\(aq) +.B salt.modules.cp.cache_dest(url, saltenv=None) New in version 3000. +.sp +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + .sp Returns the expected cache path for the file, if cached using \fI\%cp.cache_file\fP\&. @@ -157681,7 +156238,10 @@ salt \(aq*\(aq cp.cache_dest salt://my/file saltenv=dev .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.cache_dir(path, saltenv=\(aqbase\(aq, include_empty=False, include_pat=None, exclude_pat=None) +.B salt.modules.cp.cache_dir(path, saltenv=None, include_empty=False, include_pat=None, exclude_pat=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Download and cache everything under a directory from the master .INDENT 7.0 .TP @@ -157727,7 +156287,10 @@ salt \(aq*\(aq cp.cache_dir salt://path/to/dir include_pat=\(aqE@*.py$\(aq .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.cache_file(path, saltenv=\(aqbase\(aq, source_hash=None, verify_ssl=True) +.B salt.modules.cp.cache_file(path, saltenv=None, source_hash=None, verify_ssl=True, use_etag=False) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Used to cache a single file on the Minion .sp Returns the location of the new cached file on the Minion @@ -157747,6 +156310,16 @@ will not attempt to validate the servers certificate. Default is True. .sp New in version 3002. +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .sp CLI Example: @@ -157790,7 +156363,10 @@ depending on the shell being used to run the command. .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.cache_files(paths, saltenv=\(aqbase\(aq) +.B salt.modules.cp.cache_files(paths, saltenv=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Used to gather many files from the Master, the gathered files will be saved in the minion cachedir reflective to the paths retrieved from the Master @@ -157866,7 +156442,10 @@ salt \(aq*\(aq cp.cache_local_file /etc/hosts .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.cache_master(saltenv=\(aqbase\(aq) +.B salt.modules.cp.cache_master(saltenv=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Retrieve all of the files on the master and cache them locally .sp CLI Example: @@ -157886,7 +156465,7 @@ salt \(aq*\(aq cp.cache_master .B salt.modules.cp.envs() List available environments for fileserver .sp -CLI Example +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -157900,7 +156479,10 @@ salt \(aq*\(aq cp.envs .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.get_dir(path, dest, saltenv=\(aqbase\(aq, template=None, gzip=None, **kwargs) +.B salt.modules.cp.get_dir(path, dest, saltenv=None, template=None, gzip=None, **kwargs) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Used to recursively copy a directory from the salt master .sp CLI Example: @@ -157919,7 +156501,10 @@ get_dir supports the same template and gzip arguments as get_file. .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.get_file(path, dest, saltenv=\(aqbase\(aq, makedirs=False, template=None, gzip=None, **kwargs) +.B salt.modules.cp.get_file(path, dest, saltenv=None, makedirs=False, template=None, gzip=None, **kwargs) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Changed in version 2018.3.0: \fBdest\fP can now be a directory .sp @@ -157988,7 +156573,10 @@ depending on the shell being used to run the command. .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.get_file_str(path, saltenv=\(aqbase\(aq) +.B salt.modules.cp.get_file_str(path, saltenv=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Download a file from a URL to the Minion cache directory and return the contents of that file .sp @@ -158008,7 +156596,10 @@ salt \(aq*\(aq cp.get_file_str salt://my/file .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.get_template(path, dest, template=\(aqjinja\(aq, saltenv=\(aqbase\(aq, makedirs=False, **kwargs) +.B salt.modules.cp.get_template(path, dest, template=\(aqjinja\(aq, saltenv=None, makedirs=False, **kwargs) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Render a file as a template before setting it down. Warning, order is not the same as in fileclient.cp for non breaking old API. @@ -158027,7 +156618,10 @@ salt \(aq*\(aq cp.get_template salt://path/to/template /minion/dest .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.get_url(path, dest=\(aq\(aq, saltenv=\(aqbase\(aq, makedirs=False, source_hash=None) +.B salt.modules.cp.get_url(path, dest=\(aq\(aq, saltenv=None, makedirs=False, source_hash=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Changed in version 2018.3.0: \fBdest\fP can now be a directory .sp @@ -158061,7 +156655,6 @@ and \fBfile://\fP URLs. The files fetched by \fBhttp://\fP and .UNINDENT .TP .B saltenv -base Salt fileserver environment from which to retrieve the file. Ignored if \fBpath\fP is not a \fBsalt://\fP URL. .TP @@ -158089,7 +156682,10 @@ salt \(aq*\(aq cp.get_url http://www.slashdot.org /tmp/index.html .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.hash_file(path, saltenv=\(aqbase\(aq) +.B salt.modules.cp.hash_file(path, saltenv=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Return the hash of a file, to get the hash of a file on the salt master file server prepend the path with salt:// otherwise, prepend the file with / for a local file. @@ -158108,7 +156704,10 @@ salt \(aq*\(aq cp.hash_file salt://path/to/file .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.is_cached(path, saltenv=\(aqbase\(aq) +.B salt.modules.cp.is_cached(path, saltenv=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Returns the full path to a file if it is cached locally on the minion otherwise returns a blank string .sp @@ -158126,7 +156725,10 @@ salt \(aq*\(aq cp.is_cached salt://path/to/file .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.list_master(saltenv=\(aqbase\(aq, prefix=\(aq\(aq) +.B salt.modules.cp.list_master(saltenv=None, prefix=\(aq\(aq) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp List all of the files stored on the master .sp CLI Example: @@ -158143,7 +156745,10 @@ salt \(aq*\(aq cp.list_master .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.list_master_dirs(saltenv=\(aqbase\(aq, prefix=\(aq\(aq) +.B salt.modules.cp.list_master_dirs(saltenv=None, prefix=\(aq\(aq) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp List all of the directories stored on the master .sp CLI Example: @@ -158160,7 +156765,10 @@ salt \(aq*\(aq cp.list_master_dirs .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.list_master_symlinks(saltenv=\(aqbase\(aq, prefix=\(aq\(aq) +.B salt.modules.cp.list_master_symlinks(saltenv=None, prefix=\(aq\(aq) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp List all of the symlinks stored on the master .sp CLI Example: @@ -158177,7 +156785,10 @@ salt \(aq*\(aq cp.list_master_symlinks .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.list_minion(saltenv=\(aqbase\(aq) +.B salt.modules.cp.list_minion(saltenv=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp List all of the files cached on the minion .sp CLI Example: @@ -158194,7 +156805,10 @@ salt \(aq*\(aq cp.list_minion .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.list_states(saltenv=\(aqbase\(aq) +.B salt.modules.cp.list_states(saltenv=None) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp List all of the available state modules in an environment .sp CLI Example: @@ -158294,16 +156908,43 @@ Used with salt\-cp, pass the files dict, and the destination. .sp This function receives small fast copy files from the master via salt\-cp. It does not work via the CLI. +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq cp.recv +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP .B salt.modules.cp.recv_chunked(dest, chunk, append=False, compressed=True, mode=None) This function receives files copied to the minion using \fBsalt\-cp\fP and is not intended to be used directly on the CLI. +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq cp.recv_chunked +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP -.B salt.modules.cp.stat_file(path, saltenv=\(aqbase\(aq, octal=True) +.B salt.modules.cp.stat_file(path, saltenv=None, octal=True) +Changed in version 3005: \fBsaltenv\fP will use value from config if not explicitly set + +.sp Return the permissions of a file, to get the permissions of a file on the salt master file server prepend the path with salt:// otherwise, prepend the file with / for a local file. @@ -161148,7 +159789,7 @@ For example, querying \fBcore:users:root\fP will try to load .UNINDENT .INDENT 0.0 .TP -.B salt.modules.defaults.merge(dest, src, merge_lists=False, in_place=True) +.B salt.modules.defaults.merge(dest, src, merge_lists=False, in_place=True, convert_none=True) Allows deep merging of dicts in formulas. .INDENT 7.0 .TP @@ -161160,6 +159801,15 @@ If True, it will also merge lists instead of replace their items. True If True, it will merge into dest dict, if not it will make a new copy from that dict and return it. +.TP +.B convert_none +True +If True, it will convert src and dest to empty dicts if they are None. +If True and dest is None but in_place is True, raises TypeError. +If False it will make a new copy from that dict and return it. +.sp +New in version 3005. + .UNINDENT .sp CLI Example: @@ -161179,7 +159829,7 @@ instead of directly on the command\-line. .UNINDENT .INDENT 0.0 .TP -.B salt.modules.defaults.update(dest, defaults, merge_lists=True, in_place=True) +.B salt.modules.defaults.update(dest, defaults, merge_lists=True, in_place=True, convert_none=True) Allows setting defaults for group of data set e.g. group for nodes. .INDENT 7.0 .INDENT 3.5 @@ -161249,6 +159899,15 @@ If True, it will also merge lists instead of replace their items. True If True, it will merge into dest dict. if not it will make a new copy from that dict and return it. +.TP +.B convert_none +True +If True, it will convert src and dest to empty dicts if they are None. +If True and dest is None but in_place is True, raises TypeError. +If False it will make a new copy from that dict and return it. +.sp +New in version 3005. + .UNINDENT .sp It is more typical to use this in a templating language in formulas, @@ -161422,6 +160081,26 @@ salt ns1 dig.AAAA www.google.com .UNINDENT .INDENT 0.0 .TP +.B salt.modules.dig.CNAME(host, nameserver=None) +Return the CNAME record for \fBhost\fP\&. +.sp +New in version 3005. + +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt ns1 dig.CNAME mail.google.com +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP .B salt.modules.dig.MX(domain, resolve=False, nameserver=None) Return a list of lists for the MX of \fBdomain\fP\&. .sp @@ -161561,6 +160240,26 @@ salt ns1 dig.check_ip 1111:2222:3333:4444:5555:6666:7777:8888 .UNINDENT .INDENT 0.0 .TP +.B salt.modules.dig.cname(host, nameserver=None) +Return the CNAME record for \fBhost\fP\&. +.sp +New in version 3005. + +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt ns1 dig.CNAME mail.google.com +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP .B salt.modules.dig.mx(domain, resolve=False, nameserver=None) Return a list of lists for the MX of \fBdomain\fP\&. .sp @@ -172650,7 +171349,7 @@ Execution module to work with etcd .B depends .INDENT 7.0 .IP \(bu 2 -python\-etcd +python\-etcd or etcd3\-py .UNINDENT .UNINDENT .SS Configuration @@ -172685,6 +171384,59 @@ etcd.port: 4001 .UNINDENT .UNINDENT .sp +In order to choose whether to use etcd API v2 or v3, you can put the following +configuration option in the same place as your etcd configuration. This option +defaults to true, meaning you will use v2 unless you specify otherwise. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.require_v2: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +When using API v3, there are some specific options available to be configured +within your etcd profile. They are defaulted to the following... +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.encode_keys: False +etcd.encode_values: True +etcd.raw_keys: False +etcd.raw_values: False +etcd.unicode_errors: "surrogateescape" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_keys\fP indicates whether you want to pre\-encode keys using msgpack before +adding them to etcd. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +If you set \fBetcd.encode_keys\fP to \fBTrue\fP, all recursive functionality will no longer work. +This includes \fBtree\fP and \fBls\fP and all other methods if you set \fBrecurse\fP/\fBrecursive\fP to \fBTrue\fP\&. +This is due to the fact that when encoding with msgpack, keys like \fB/salt\fP and \fB/salt/stack\fP will have +differing byte prefixes, and etcd v3 searches recursively using prefixes. +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_values\fP indicates whether you want to pre\-encode values using msgpack before +adding them to etcd. This defaults to \fBTrue\fP to avoid data loss on non\-string values wherever possible. +.sp +\fBetcd.raw_keys\fP determines whether you want the raw key or a string returned. +.sp +\fBetcd.raw_values\fP determines whether you want the raw value or a string returned. +.sp +\fBetcd.unicode_errors\fP determines what you policy to follow when there are encoding/decoding errors. +.sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 @@ -173699,7 +172451,7 @@ salt \(aq*\(aq file.chattr foo3.txt operator=remove attributes=i version=2 .UNINDENT .INDENT 0.0 .TP -.B salt.modules.file.check_file_meta(name, sfn, source, source_sum, user, group, mode, attrs, saltenv, contents=None, seuser=None, serole=None, setype=None, serange=None, verify_ssl=True) +.B salt.modules.file.check_file_meta(name, sfn, source, source_sum, user, group, mode, attrs, saltenv, contents=None, seuser=None, serole=None, setype=None, serange=None, verify_ssl=True, follow_symlinks=False) Check for the changes in the file metadata. .sp CLI Example: @@ -173796,6 +172548,13 @@ will not attempt to validate the servers certificate. Default is True. .sp New in version 3002. +.TP +.B follow_symlinks +If the desired path is a symlink, follow it and check the permissions +of the file to which the symlink points. +.sp +New in version 3005. + .UNINDENT .UNINDENT .INDENT 0.0 @@ -173837,8 +172596,17 @@ salt \(aq*\(aq file.check_hash /etc/fstab md5=e138491e9d5b97023cea823fe17bac22 .UNINDENT .INDENT 0.0 .TP -.B salt.modules.file.check_managed(name, source, source_hash, source_hash_name, user, group, mode, attrs, template, context, defaults, saltenv, contents=None, skip_verify=False, seuser=None, serole=None, setype=None, serange=None, **kwargs) +.B salt.modules.file.check_managed(name, source, source_hash, source_hash_name, user, group, mode, attrs, template, context, defaults, saltenv, contents=None, skip_verify=False, seuser=None, serole=None, setype=None, serange=None, follow_symlinks=False, **kwargs) Check to see what changes need to be made for a file +.INDENT 7.0 +.TP +.B follow_symlinks +If the desired path is a symlink, follow it and check the permissions +of the file to which the symlink points. +.sp +New in version 3005. + +.UNINDENT .sp CLI Example: .INDENT 7.0 @@ -173854,7 +172622,7 @@ salt \(aq*\(aq file.check_managed /etc/httpd/conf.d/httpd.conf salt://http/httpd .UNINDENT .INDENT 0.0 .TP -.B salt.modules.file.check_managed_changes(name, source, source_hash, source_hash_name, user, group, mode, attrs, template, context, defaults, saltenv, contents=None, skip_verify=False, keep_mode=False, seuser=None, serole=None, setype=None, serange=None, verify_ssl=True, **kwargs) +.B salt.modules.file.check_managed_changes(name, source, source_hash, source_hash_name, user, group, mode, attrs, template, context, defaults, saltenv, contents=None, skip_verify=False, keep_mode=False, seuser=None, serole=None, setype=None, serange=None, verify_ssl=True, follow_symlinks=False, **kwargs) Return a dictionary of what changes need to be made for a file .sp Changed in version 3001: selinux attributes added @@ -173867,6 +172635,13 @@ will not attempt to validate the servers certificate. Default is True. .sp New in version 3002. +.TP +.B follow_symlinks +If the desired path is a symlink, follow it and check the permissions +of the file to which the symlink points. +.sp +New in version 3005. + .UNINDENT .sp CLI Example: @@ -174699,7 +173474,7 @@ salt \(aq*\(aq file.get_hash /etc/shadow .UNINDENT .INDENT 0.0 .TP -.B salt.modules.file.get_managed(name, template, source, source_hash, source_hash_name, user, group, mode, attrs, saltenv, context, defaults, skip_verify=False, verify_ssl=True, **kwargs) +.B salt.modules.file.get_managed(name, template, source, source_hash, source_hash_name, user, group, mode, attrs, saltenv, context, defaults, skip_verify=False, verify_ssl=True, use_etag=False, **kwargs) Return the managed file data for file.managed .INDENT 7.0 .TP @@ -174757,6 +173532,16 @@ will not attempt to validate the servers certificate. Default is True. .sp New in version 3002. +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .sp CLI Example: @@ -175804,7 +174589,7 @@ salt \(aq*\(aq file.makedirs_perms /opt/code .UNINDENT .INDENT 0.0 .TP -.B salt.modules.file.manage_file(name, sfn, ret, source, source_sum, user, group, mode, attrs, saltenv, backup, makedirs=False, template=None, show_changes=True, contents=None, dir_mode=None, follow_symlinks=True, skip_verify=False, keep_mode=False, encoding=None, encoding_errors=\(aqstrict\(aq, seuser=None, serole=None, setype=None, serange=None, verify_ssl=True, **kwargs) +.B salt.modules.file.manage_file(name, sfn, ret, source, source_sum, user, group, mode, attrs, saltenv, backup, makedirs=False, template=None, show_changes=True, contents=None, dir_mode=None, follow_symlinks=True, skip_verify=False, keep_mode=False, encoding=None, encoding_errors=\(aqstrict\(aq, seuser=None, serole=None, setype=None, serange=None, verify_ssl=True, use_etag=False, **kwargs) Checks the destination against what was retrieved with get_managed and makes the appropriate modifications (if necessary). .INDENT 7.0 @@ -175936,6 +174721,16 @@ will not attempt to validate the servers certificate. Default is True. .sp New in version 3002. +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .sp CLI Example: @@ -176429,7 +175224,33 @@ New in version 2014.1.0. .sp Return the path that a symlink points to -If canonicalize is set to True, then it return the final target +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBpath\fP (\fI\%str\fP) \-\- The path to the symlink +.IP \(bu 2 +\fBcanonicalize\fP (\fI\%bool\fP) \-\- Get the canonical path eliminating any symbolic links encountered in +the path +.UNINDENT +.TP +.B Returns +The path that the symlink points to +.TP +.B Return type +\fI\%str\fP +.TP +.B Raises +.INDENT 7.0 +.IP \(bu 2 +\fBSaltInvocationError\fP \-\- path is not absolute +.IP \(bu 2 +\fBSaltInvocationError\fP \-\- path is not a link +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- error reading the symbolic link +.UNINDENT +.UNINDENT .sp CLI Example: .INDENT 7.0 @@ -177021,8 +175842,27 @@ salt \(aq*\(aq file.statvfs /path/to/file .UNINDENT .INDENT 0.0 .TP -.B salt.modules.file.symlink(src, path) +.B salt.modules.file.symlink(src, path, force=False) Create a symbolic link (symlink, soft link) to a file +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsrc\fP (\fI\%str\fP) \-\- The path to a file or directory +.IP \(bu 2 +\fBpath\fP (\fI\%str\fP) \-\- The path to the link. Must be an absolute path +.IP \(bu 2 +\fBforce\fP (\fI\%bool\fP) \-\- Overwrite an existing symlink with the same name +\&.. versionadded:: 3005 +.UNINDENT +.TP +.B Returns +True if successful, otherwise False +.TP +.B Return type +\fI\%bool\fP +.UNINDENT .sp CLI Example: .INDENT 7.0 @@ -179785,6 +178625,36 @@ Linux .UNINDENT .INDENT 0.0 .TP +.B salt.modules.freezer.compare(old, new) +Display the difference between two frozen states. The results are shown as +as a dictionary with keys for packages and repositories. Each key may +contain a changes dictionary showing items that differ between the two +frozen states. Items shown in the "old" changes but not the "new" were +removed. Items in "new" but not "old" were added. Items shown in both +probably updated/changed versions between freezes. +.INDENT 7.0 +.TP +.B old +Name of the "old" frozen state. Required. +.TP +.B new +Name of the "new" frozen state. Required. +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq freezer.freeze pre_install post_install +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP .B salt.modules.freezer.freeze(name=None, force=False, **kwargs) Save the list of package and repos in a freeze file. .sp @@ -189946,53 +188816,6 @@ salt \(aq*\(aq grains.get abc::def|ghi delimiter=\(aq|\(aq .UNINDENT .INDENT 0.0 .TP -.B salt.modules.grains.get_or_set_hash(name, length=8, chars=\(aqabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(\-_=+)\(aq) -Perform a one\-time generation of a hash and write it to the local grains. -If that grain has already been set return the value instead. -.sp -This is useful for generating passwords or keys that are specific to a -single minion that don\(aqt need to be stored somewhere centrally. -.sp -State Example: -.INDENT 7.0 -.INDENT 3.5 -.sp -.nf -.ft C -some_mysql_user: - mysql_user: - \- present - \- host: localhost - \- password: {{ salt[\(aqgrains.get_or_set_hash\(aq](\(aqmysql:some_mysql_user\(aq) }} -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -CLI Example: -.INDENT 7.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \(aq*\(aq grains.get_or_set_hash \(aqdjango:SECRET_KEY\(aq 50 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -\fBWARNING:\fP -.INDENT 7.0 -.INDENT 3.5 -This function could return strings which may contain characters which are reserved -as directives by the YAML parser, such as strings beginning with \fB%\fP\&. To avoid -issues when using the output of this function in an SLS file containing YAML+Jinja, -surround the call with single quotes. -.UNINDENT -.UNINDENT -.UNINDENT -.INDENT 0.0 -.TP .B salt.modules.grains.has_value(key) Determine whether a key exists in the grains dictionary. .sp @@ -193862,7 +192685,7 @@ Passes through all the parameters described in the \fI\%utils.http.query function\fP: .INDENT 7.0 .TP -.B salt.utils.http.query(url, method=\(aqGET\(aq, params=None, data=None, data_file=None, header_dict=None, header_list=None, header_file=None, username=None, password=None, auth=None, decode=False, decode_type=\(aqauto\(aq, status=False, headers=False, text=False, cookies=None, cookie_jar=None, cookie_format=\(aqlwp\(aq, persist_session=False, session_cookie_jar=None, data_render=False, data_renderer=None, header_render=False, header_renderer=None, template_dict=None, test=False, test_url=None, node=\(aqminion\(aq, port=80, opts=None, backend=None, ca_bundle=None, verify_ssl=None, cert=None, text_out=None, headers_out=None, decode_out=None, stream=False, streaming_callback=None, header_callback=None, handle=False, agent=\(aqSalt/3004.1(aq, hide_fields=None, raise_error=True, formdata=False, formdata_fieldname=None, formdata_filename=None, decode_body=True, **kwargs) +.B salt.utils.http.query(url, method=\(aqGET\(aq, params=None, data=None, data_file=None, header_dict=None, header_list=None, header_file=None, username=None, password=None, auth=None, decode=False, decode_type=\(aqauto\(aq, status=False, headers=False, text=False, cookies=None, cookie_jar=None, cookie_format=\(aqlwp\(aq, persist_session=False, session_cookie_jar=None, data_render=False, data_renderer=None, header_render=False, header_renderer=None, template_dict=None, test=False, test_url=None, node=\(aqminion\(aq, port=80, opts=None, backend=None, ca_bundle=None, verify_ssl=None, cert=None, text_out=None, headers_out=None, decode_out=None, stream=False, streaming_callback=None, header_callback=None, handle=False, agent=\(aqSalt/3005+0na.53722c5\(aq, hide_fields=None, raise_error=True, formdata=False, formdata_fieldname=None, formdata_filename=None, decode_body=True, **kwargs) Query a resource, and decode the return data .UNINDENT .INDENT 7.0 @@ -193880,7 +192703,7 @@ CLI Example: .nf .ft C salt \(aq*\(aq http.query http://somelink.com/ -salt \(aq*\(aq http.query http://somelink.com/ method=POST params=\(aqkey1=val1&key2=val2\(aq +salt \(aq*\(aq http.query http://somelink.com/ method=POST params=\(aq{"key1": "val1", "key2": "val2"}\(aq salt \(aq*\(aq http.query http://somelink.com/ method=POST data=\(aqsomecontent\(aq .ft P .fi @@ -205245,6 +204068,28 @@ salt \(aq*\(aq keystore.add keyname /tmp/test.store changeit /tmp/512.cert priva .UNINDENT .INDENT 0.0 .TP +.B salt.modules.keystore.get_sha1(certificate) +Returns the SHA1 sum of a ASN1/PEM certificate +.INDENT 7.0 +.TP +.B Parameters +\fBname\fP \-\- ASN1/PEM certificate +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq keystore.get_sha1 "(certificate_content_string)" +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP .B salt.modules.keystore.list(keystore, passphrase, alias=None, return_cert=False) Lists certificates in a keytool managed keystore. .INDENT 7.0 @@ -211524,7 +210369,7 @@ It comes very handy when debugging complex Jinja templates, for example: .nf .ft C {%\- for var in range(10) %} - {%\- do salt.log.info(var) \-%} + {%\- do salt["log.info"](var) \-%} {%\- endfor %} .ft P .fi @@ -217595,7 +216440,35 @@ salt \(aq*\(aq assistive.install /usr/bin/osascript .UNINDENT .INDENT 0.0 .TP -.B salt.modules.mac_assistive.enable(app_id, enabled=True) +.B class salt.modules.mac_assistive.TccDB(path=None) +.INDENT 7.0 +.TP +.B disable(app_id) +.UNINDENT +.INDENT 7.0 +.TP +.B enable(app_id) +.UNINDENT +.INDENT 7.0 +.TP +.B enabled(app_id) +.UNINDENT +.INDENT 7.0 +.TP +.B install(app_id, enable=True) +.UNINDENT +.INDENT 7.0 +.TP +.B installed(app_id) +.UNINDENT +.INDENT 7.0 +.TP +.B remove(app_id) +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.mac_assistive.enable_(app_id, enabled=True) Enable or disable an existing assistive access application. .INDENT 7.0 .TP @@ -226135,9 +225008,9 @@ CLI Example: .sp .nf .ft C -salt \(aq*\(aq mine.send network.ip_addrs eth0 -salt \(aq*\(aq mine.send eth0_ip_addrs mine_function=network.ip_addrs eth0 -salt \(aq*\(aq mine.send eth0_ip_addrs mine_function=network.ip_addrs eth0 allow_tgt=\(aqG@grain:value\(aq allow_tgt_type=compound +salt \(aq*\(aq mine.send network.ip_addrs interface=eth0 +salt \(aq*\(aq mine.send eth0_ip_addrs mine_function=network.ip_addrs interface=eth0 +salt \(aq*\(aq mine.send eth0_ip_addrs mine_function=network.ip_addrs interface=eth0 allow_tgt=\(aqG@grain:value\(aq allow_tgt_type=compound .ft P .fi .UNINDENT @@ -242037,6 +240910,18 @@ salt \(aq*\(aq network.dig archlinux.org .B salt.modules.network.fqdns() Return all known FQDNs for the system by enumerating all interfaces and then trying to reverse resolve them (excluding \(aqlo\(aq interface). +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq network.fqdns +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP @@ -242338,10 +241223,10 @@ CLI Example: .sp .nf .ft C -salt \(aq*\(aq network.list_networks -salt \(aq*\(aq network.list_networks interface=docker0 -salt \(aq*\(aq network.list_networks interface=docker0,enp* -salt \(aq*\(aq network.list_networks interface=eth* +salt \(aq*\(aq network.ip_networks +salt \(aq*\(aq network.ip_networks interface=docker0 +salt \(aq*\(aq network.ip_networks interface=docker0,enp* +salt \(aq*\(aq network.ip_networks interface=eth* .ft P .fi .UNINDENT @@ -242368,10 +241253,10 @@ CLI Example: .sp .nf .ft C -salt \(aq*\(aq network.list_networks6 -salt \(aq*\(aq network.list_networks6 interface=docker0 -salt \(aq*\(aq network.list_networks6 interface=docker0,enp* -salt \(aq*\(aq network.list_networks6 interface=eth* +salt \(aq*\(aq network.ip_networks6 +salt \(aq*\(aq network.ip_networks6 interface=docker0 +salt \(aq*\(aq network.ip_networks6 interface=docker0,enp* +salt \(aq*\(aq network.ip_networks6 interface=eth* .ft P .fi .UNINDENT @@ -249263,7 +248148,7 @@ salt\-call from the GuestShell environment as follows. .sp .nf .ft C -salt\-call \-\-local nxos.show \(aqshow lldp neighbors\(aq raw_text +salt\-call \-\-local nxos.sendline \(aqshow lldp neighbors\(aq raw_text .ft P .fi .UNINDENT @@ -250120,7 +249005,7 @@ CLI Example: .sp .nf .ft C -salt\-call \-\-local nxps_api.rpc \(aqshow version\(aq +salt\-call \-\-local nxos_api.rpc \(aqshow version\(aq .ft P .fi .UNINDENT @@ -259863,7 +258748,7 @@ salt \(aq*\(aq pillar.ext "{\(aqgit\(aq: [{\(aqmybranch https://github.com/myuse .UNINDENT .INDENT 0.0 .TP -.B salt.modules.pillar.fetch(key, default=, merge=False, merge_nested_lists=None, delimiter=\(aq:\(aq, pillarenv=None, saltenv=None) +.B salt.modules.pillar.fetch(key, default=None, merge=False, merge_nested_lists=None, delimiter=\(aq:\(aq, pillarenv=None, saltenv=None) New in version 0.14. .sp @@ -260103,7 +258988,7 @@ salt \(aq*\(aq pillar.filter_by \(aq{web: Serve it up, db: I query, default: x_x .UNINDENT .INDENT 0.0 .TP -.B salt.modules.pillar.get(key, default=, merge=False, merge_nested_lists=None, delimiter=\(aq:\(aq, pillarenv=None, saltenv=None) +.B salt.modules.pillar.get(key, default=None, merge=False, merge_nested_lists=None, delimiter=\(aq:\(aq, pillarenv=None, saltenv=None) New in version 0.14. .sp @@ -274927,6 +273812,91 @@ salt \(aq*\(aq restartcheck.restartcheck .UNINDENT .UNINDENT .UNINDENT +.SS salt.modules.restconf +.sp +Execution module for RESTCONF Proxy minions +.INDENT 0.0 +.TP +.B codeauthor +Jamie (Bear) Murphy <\fI\%jamiemurphyit@gmail.com\fP> +.TP +.B maturity +new +.TP +.B platform +any +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.restconf.get_data(path) +Returns an object containing the content of the request path with a GET request. +Data returned will contain a dict with at minimum a key of "status" containing the http status code +Other keys that should be available error (if http error), body, dict (parsed json to dict) +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq restconf.get_data restconf/yang\-library\-version +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.restconf.info() +Returns the RESTCONF capabilities PATH +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq restconf.info +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.restconf.path_check(primary_path, init_path) +Used to check which path responds with a 200 status +Returns an array of True/False and a dict with keys path + path_method + response data, used in states code. +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq restconf.path_check restconf/yang\-library\-version/specifc_item restconf/yang\-library\-version +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.restconf.set_data(path, method, dict_payload) +Sends a post/patch/other type of rest method to a specified path with the specified method with specified payload +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq restconf.set_data restconf/yang\-library\-version method=PATCH dict_payload="" +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.modules.ret .sp Module to integrate with the returner system and retrieve data sent to a salt returner @@ -278884,7 +277854,7 @@ salt \(aq*\(aq saltutil.mmodule base test.ping .UNINDENT .INDENT 0.0 .TP -.B salt.modules.saltutil.pillar_refresh(wait=False, timeout=30) +.B salt.modules.saltutil.pillar_refresh(wait=False, timeout=30, clean_cache=True) This function is an alias of \fBrefresh_pillar\fP\&. .INDENT 7.0 .INDENT 3.5 @@ -278903,6 +277873,13 @@ How long to wait in seconds, only used when wait is True, defaults to 30. .B type timeout int, optional .TP +.B param clean_cache +Clean the pillar cache, only used when \fIpillar_cache\fP is True. Defaults to True +.TP +.B type clean_cache +bool, optional +\&.. versionadded:: 3005 +.TP .B return Boolean status, True when the pillar_refresh event was fired successfully. .UNINDENT @@ -279014,7 +277991,7 @@ salt \(aq*\(aq saltutil.refresh_modules .UNINDENT .INDENT 0.0 .TP -.B salt.modules.saltutil.refresh_pillar(wait=False, timeout=30) +.B salt.modules.saltutil.refresh_pillar(wait=False, timeout=30, clean_cache=True) Signal the minion to refresh the in\-memory pillar data. See pillar\-in\-memory\&. .INDENT 7.0 .TP @@ -279024,6 +278001,9 @@ Signal the minion to refresh the in\-memory pillar data. See pillar\-in\-memory\ \fBwait\fP (\fI\%bool\fP\fI, \fP\fIoptional\fP) \-\- Wait for pillar refresh to complete, defaults to False. .IP \(bu 2 \fBtimeout\fP (\fI\%int\fP\fI, \fP\fIoptional\fP) \-\- How long to wait in seconds, only used when wait is True, defaults to 30. +.IP \(bu 2 +\fBclean_cache\fP (\fI\%bool\fP\fI, \fP\fIoptional +\&.. versionadded:: 3005\fP) \-\- Clean the pillar cache, only used when \fIpillar_cache\fP is True. Defaults to True .UNINDENT .TP .B Returns @@ -280132,7 +279112,7 @@ salt \(aq*\(aq saltutil.term_job .TP .B salt.modules.saltutil.update(version=None) Update the salt minion from the URL defined in opts[\(aqupdate_url\(aq] -SaltStack, Inc provides the latest builds here: +VMware, Inc provides the latest builds here: update_url: \fI\%https://repo.saltproject.io/windows/\fP .sp Be aware that as of 2014\-8\-11 there\(aqs a bug in esky such that only the @@ -280210,6 +279190,8 @@ their return data. .sp Module for managing the Salt schedule on a minion .sp +Requires that python\-dateutil is installed on the minion. +.sp New in version 2014.7.0. .INDENT 0.0 @@ -280226,6 +279208,9 @@ CLI Example: salt \(aq*\(aq schedule.add job1 function=\(aqtest.ping\(aq seconds=3600 # If function have some arguments, use job_args salt \(aq*\(aq schedule.add job2 function=\(aqcmd.run\(aq job_args="[\(aqdate >> /tmp/date.log\(aq]" seconds=60 + +# Add job to Salt minion when the Salt minion is not running +salt \(aq*\(aq schedule.add job1 function=\(aqtest.ping\(aq seconds=3600 offline=True .ft P .fi .UNINDENT @@ -280277,6 +279262,9 @@ CLI Example: .nf .ft C salt \(aq*\(aq schedule.delete job1 + +# Delete job on Salt minion when the Salt minion is not running +salt \(aq*\(aq schedule.delete job1 .ft P .fi .UNINDENT @@ -280377,7 +279365,7 @@ salt \(aq*\(aq schedule.is_enabled .UNINDENT .INDENT 0.0 .TP -.B salt.modules.schedule.job_status(name) +.B salt.modules.schedule.job_status(name, time_fmt=\(aq%Y\-%m\-%dT%H:%M:%S\(aq) Show the information for a particular job. .sp CLI Example: @@ -280386,7 +279374,7 @@ CLI Example: .sp .nf .ft C -salt \(aq*\(aq schedule.job_status +salt \(aq*\(aq schedule.job_status job_name .ft P .fi .UNINDENT @@ -280394,7 +279382,7 @@ salt \(aq*\(aq schedule.job_status .UNINDENT .INDENT 0.0 .TP -.B salt.modules.schedule.list_(show_all=False, show_disabled=True, where=None, return_yaml=True) +.B salt.modules.schedule.list_(show_all=False, show_disabled=True, where=None, return_yaml=True, offline=False) List the jobs currently scheduled on the minion .sp CLI Example: @@ -280427,6 +279415,9 @@ CLI Example: .nf .ft C salt \(aq*\(aq schedule.modify job1 function=\(aqtest.ping\(aq seconds=3600 + +# Modify job on Salt minion when the Salt minion is not running +salt \(aq*\(aq schedule.modify job1 function=\(aqtest.ping\(aq seconds=3600 offline=True .ft P .fi .UNINDENT @@ -280486,6 +279477,9 @@ CLI Example: .nf .ft C salt \(aq*\(aq schedule.purge + +# Purge jobs on Salt minion +salt \(aq*\(aq schedule.purge .ft P .fi .UNINDENT @@ -282828,8 +281822,8 @@ end with a newline. Default is \fBFalse\fP\&. .sp .nf .ft C -{{ set copyright=\(aqThis file may not be copied or distributed without permission of SaltStack, Inc.\(aq }} -{{ salt[\(aqslsutil.banner\(aq](title=\(aqCopyright 2019 SaltStack, Inc.\(aq, text=copyright, width=60) }} +{{ set copyright=\(aqThis file may not be copied or distributed without permission of VMware, Inc.\(aq }} +{{ salt[\(aqslsutil.banner\(aq](title=\(aqCopyright 2019 VMware, Inc.\(aq, text=copyright, width=60) }} .ft P .fi .UNINDENT @@ -282841,10 +281835,10 @@ end with a newline. Default is \fBFalse\fP\&. .ft C ############################################################ # # -# Copyright 2019 SaltStack, Inc. # +# Copyright 2019 VMware, Inc. # # # # This file may not be copied or distributed without # -# permission of SaltStack, Inc. # +# permission of VMware, Inc. # ############################################################ .ft P .fi @@ -289581,8 +288575,8 @@ Retrieve information about host public keys from remote server The name of the remote host (e.g. "github.com") .TP .B enc -Defines what type of key is being used, can be ed25519, ecdsa ssh\-rsa -or ssh\-dss +Defines what type of key is being used, can be ed25519, ecdsa, +ssh\-rsa, ssh\-dss or any other type as of openssh server version 8.7. .TP .B port Optional parameter, denoting the port of the remote host on which an @@ -289741,8 +288735,8 @@ used in case, if the public key will be requested from it. By default the port 22 is used. .TP .B enc -Defines what type of key is being used, can be ed25519, ecdsa ssh\-rsa -or ssh\-dss +Defines what type of key is being used, can be ed25519, ecdsa, +ssh\-rsa, ssh\-dss or any other type as of openssh server version 8.7. .TP .B config The location of the authorized keys file relative to the user\(aqs home @@ -290507,6 +289501,19 @@ queue the new state run to begin running once the other has finished. This option starts a new thread for each queued state run, so use this option sparingly. .TP +.B concurrent +False +Execute state runs concurrently instead of serially +.sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 +This flag is potentially dangerous. It is designed for use when +multiple state runs can safely be run at the same time. Do \fInot\fP +use this flag for performance optimization. +.UNINDENT +.UNINDENT +.TP .B localconfig Optionally, instead of using the minion config, load minion opts from the file specified by this argument, and then merge them with the @@ -292655,6 +291662,350 @@ salt \(aq*\(aq apache.check_mod_enabled status .UNINDENT .UNINDENT .UNINDENT +.SS salt.modules.suse_ip +.sp +The networking module for SUSE based distros +.sp +New in version 3005. + +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.apply_network_settings(**settings) +Apply global network configuration. +.INDENT 7.0 +.TP +.B :param +param settings: +The network settings to apply +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +The result of \fBservice.reload\fP for \fBnetwork\fP service +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.apply_network_settings +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.build_interface(iface, iface_type, enabled, **settings) +Build an interface script for a network interface. +.INDENT 7.0 +.TP +.B :param +param iface: +The name of the interface to build the configuration for +.TP +.B :param +param iface_type:.INDENT 7.0 +.TP +.B The type of the interface. The following types are possible: +.INDENT 7.0 +.IP \(bu 2 +eth +.IP \(bu 2 +bond +.IP \(bu 2 +alias +.IP \(bu 2 +clone +.IP \(bu 2 +ipsec +.IP \(bu 2 +dialup +.IP \(bu 2 +bridge +.IP \(bu 2 +slave +.IP \(bu 2 +vlan +.IP \(bu 2 +ipip +.IP \(bu 2 +ib +.UNINDENT +.UNINDENT +.TP +.B :param +param enabled: +Build the interface enabled or disabled +.TP +.B :param +param settings: +The settings for the interface +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +A dictionary of file/content +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.build_interface eth0 eth +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.build_network_settings(**settings) +Build the global network script. +.INDENT 7.0 +.TP +.B :param +param settings: +The network settings +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +A dictionary of file/content +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.build_network_settings +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.build_routes(iface, **settings) +Build a route script for a network interface. +.INDENT 7.0 +.TP +.B :param +param iface: +The name of the interface to build the routes for +.TP +.B :param +param settings: +The settings for the routes +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +A dictionary of file/content +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.build_routes eth0 +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.down(iface, iface_type=None) +Shutdown a network interface +.INDENT 7.0 +.TP +.B :param +param iface: +The name of the interface to shutdown +.TP +.B :param +param iface_type: +The type of the interface +If \fBslave\fP is specified, no any action is performing +Default is \fBNone\fP +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +The result of \fBifdown\fP command or \fBNone\fP if \fBslave\fP +iface_type was specified +.TP +.B Return type +\fI\%str\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.down eth0 +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.get_interface(iface) +Return the contents of an interface script +.INDENT 7.0 +.TP +.B :param +param iface: +The name of the interface to get settings for +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +A dictionary of file/content +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.get_interface eth0 +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.get_network_settings() +Return the contents of the global network script. +.INDENT 7.0 +.TP +.B :param +param iface: +The name of the interface to start up +.TP +.B :param +param iface_type: +The type of the interface +If \fBslave\fP is specified, no any action is performing +Default is \fBNone\fP +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +A dictionary of file/content +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.get_network_settings +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.get_routes(iface) +Return the contents of the interface routes script. +.INDENT 7.0 +.TP +.B :param +param iface: +The name of the interface to get the routes for +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +A dictionary of file/content +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.get_routes eth0 +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.suse_ip.up(iface, iface_type=None) +Start up a network interface +.INDENT 7.0 +.TP +.B :param +param iface: +The name of the interface to start up +.TP +.B :param +param iface_type: +The type of the interface +If \fBslave\fP is specified, no any action is performing +Default is \fBNone\fP +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +The result of \fBifup\fP command or \fBNone\fP if \fBslave\fP +iface_type was specified +.TP +.B Return type +\fI\%str\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq ip.up eth0 +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.modules.svn .sp Subversion SCM @@ -297678,7 +297029,8 @@ salt \(aq*\(aq test.versions_report .UNINDENT .SS salt.modules.test_virtual .sp -Module for running arbitrary tests with a __virtual__ function +Module for testing that a __virtual__ function returning False will not be +available via the Salt Loader. .INDENT 0.0 .TP .B salt.modules.test_virtual.ping() @@ -300596,10 +299948,6 @@ Linux .UNINDENT .INDENT 0.0 .TP -.B class salt.modules.transactional_update.TransactionalUpdateHighstate(opts, pillar=None, wrapper=None, fsclient=None) -.UNINDENT -.INDENT 0.0 -.TP .B salt.modules.transactional_update.apply_(mods=None, **kwargs) Apply an state inside a transaction. .sp @@ -301245,7 +300593,7 @@ salt microos transactional_update run "mkdir /tmp/dir" snapshot="continue" .UNINDENT .INDENT 0.0 .TP -.B salt.modules.transactional_update.single(fun, name, test=None, activate_transaction=False, queue=False, **kwargs) +.B salt.modules.transactional_update.single(fun, name, activate_transaction=False, queue=False, **kwargs) Execute a single state function with the named kwargs, returns False if insufficient data is sent to the command .sp @@ -301283,7 +300631,7 @@ salt microos transactional_update.single pkg.installed name=emacs activate_trans .UNINDENT .INDENT 0.0 .TP -.B salt.modules.transactional_update.sls(mods, saltenv=\(aqbase\(aq, test=None, exclude=None, activate_transaction=False, queue=False, **kwargs) +.B salt.modules.transactional_update.sls(mods, activate_transaction=False, queue=False, **kwargs) Execute the states in one or more SLS files inside a transaction. .INDENT 7.0 .TP @@ -303568,7 +302916,7 @@ salt \(aq*\(aq vault.destroy_secret "secret/my/secret" 1 2 .UNINDENT .INDENT 0.0 .TP -.B salt.modules.vault.list_secrets(path, default=) +.B salt.modules.vault.list_secrets(path, default=None) Changed in version 3001: The \fBdefault\fP argument has been added. When the path or path/key combination is not found, an exception will be raised, unless a default is provided. @@ -303591,7 +302939,7 @@ salt \(aq*\(aq vault.list_secrets "secret/my/" .UNINDENT .INDENT 0.0 .TP -.B salt.modules.vault.read_secret(path, key=None, metadata=False, default=) +.B salt.modules.vault.read_secret(path, key=None, metadata=False, default=None) Changed in version 3001: The \fBdefault\fP argument has been added. When the path or path/key combination is not found, an exception will be raised, unless a default is provided. @@ -305939,12 +305287,6 @@ See \fBseed module for more details\fP .IP \(bu 2 \fBboot_dev\fP \-\- String of space\-separated devices to boot from (Default: \fB\(aqhd\(aq\fP) .IP \(bu 2 -\fBserial_type\fP \-\- Serial device type. One of \fB\(aqpty\(aq\fP, \fB\(aqtcp\(aq\fP (Default: \fBNone\fP) -.IP \(bu 2 -\fBtelnet_port\fP \-\- Telnet port to use for serial device of type \fBtcp\fP\&. -.IP \(bu 2 -\fBconsole\fP \-\- \fBTrue\fP to add a console device along with serial one (Default: \fBTrue\fP) -.IP \(bu 2 \fBconnection\fP \-\- .sp libvirt connection URI, overriding defaults @@ -306214,7 +305556,7 @@ specifies requested topology of virtual CPU provided to the guest. Four possible NUMA node, number of dies per socket, number of cores per die, and number of threads per core, respectively. .TP .B features -A dictionary conains a set of cpu features to fine\-tune features provided by the selected CPU model. Use cpu +A dictionary contains a set of cpu features to fine\-tune features provided by the selected CPU model. Use cpu feature \fBname\fP as the key and the \fBpolicy\fP as the value. \fBpolicy\fP Attribute takes \fBforce\fP, \fBrequire\fP, \fBoptional\fP, \fBdisable\fP or \fBforbid\fP\&. .TP @@ -307235,7 +306577,7 @@ New in version 3003. .IP \(bu 2 \fBaddresses\fP \-\- .sp -whitespace separated list of addreses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. +whitespace separated list of addresses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. (default \fBNone\fP) .INDENT 2.0 .INDENT 3.5 @@ -307737,7 +307079,7 @@ whitespace separated list of network interfaces devices that can be used for thi .IP \(bu 2 \fBaddresses\fP \-\- .sp -whitespace separated list of addreses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. +whitespace separated list of addresses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. (default \fBNone\fP) .INDENT 2.0 .INDENT 3.5 @@ -310929,6 +310271,8 @@ performing the required task. Default value is True. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311151,6 +310495,8 @@ performing the required task Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311180,6 +310526,8 @@ points to. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311219,13 +310567,15 @@ performing the required task. Default is False. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C -salt \(aq*\(aq vsphere.assign_license license_key=00000:00000 - license name=test entity={type:cluster,datacenter:dc,cluster:cl} +salt \(aq*\(aq vsphere.assign_license license_key=AAAAA\-11111\-AAAAA\-11111\-AAAAA + license_name=test entity={type:cluster,datacenter:dc,cluster:cl} .ft P .fi .UNINDENT @@ -311332,6 +310682,8 @@ smaller than the datastore size. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311423,6 +310775,8 @@ Default value is None. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311453,6 +310807,8 @@ The datacenter name Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311487,6 +310843,8 @@ performing the required task. Default value is True. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311522,6 +310880,8 @@ Name of the DVS that will contain the portgroup. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311552,6 +310912,8 @@ Name of the DVS to be created. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311584,6 +310946,8 @@ Dictionary containing the changes to apply to the policy. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -311890,6 +311254,8 @@ performing the required task. Default is True. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -312038,6 +311404,8 @@ Placement information of the virtual machine .B service_instance vCenter service instance for connection and configuration .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -312153,6 +311521,8 @@ Scsi address of the disk. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -312355,6 +311725,8 @@ Returns the host cache configuration on the proxy host. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313028,6 +312400,8 @@ List of license keys to be retrieved. Default is None. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313105,6 +312479,8 @@ Returns a list of the metadata of all capabilities in the vCenter. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313136,6 +312512,8 @@ Default value is None. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313249,6 +312627,8 @@ Default is None. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313369,6 +312749,8 @@ Default is None. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313397,6 +312779,8 @@ points to. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313418,14 +312802,14 @@ Returns the default vsan storage policy. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C -salt \(aq*\(aq vsphere.list_storage_policies - -salt \(aq*\(aq vsphere.list_storage_policy policy_names=[policy_name] +salt \(aq*\(aq vsphere.list_default_vsan_policy .ft P .fi .UNINDENT @@ -313453,6 +312837,8 @@ Scsi address of the disk. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313486,6 +312872,8 @@ arguments Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313517,6 +312905,8 @@ List of scsi addresses of disks to be retrieved. Default is None Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313553,12 +312943,14 @@ Default value is None Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp .nf .ft C -salt \(aq*\(aq vsphere.list_dvporgroups +salt \(aq*\(aq vsphere.list_dvportgroups salt \(aq*\(aq vsphere.list_dvportgroups dvs=dvs1 @@ -313624,6 +313016,8 @@ Default value is None. List of DVS names to look for. If None, all DVSs are returned. Default value is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313765,6 +313159,8 @@ Lists all licenses on a vCenter. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313982,6 +313378,8 @@ Default is None. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -313989,7 +313387,7 @@ Default is None. .ft C salt \(aq*\(aq vsphere.list_storage_policies -salt \(aq*\(aq vsphere.list_storage_policy policy_names=[policy_name] +salt \(aq*\(aq vsphere.list_storage_policies policy_names=[policy_name] .ft P .fi .UNINDENT @@ -314086,6 +313484,8 @@ Name of the DVS containing the portgroup. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314192,6 +313592,8 @@ Datacenter of the virtual machine Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314219,6 +313621,8 @@ Datacenter of the virtual machine Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314278,6 +313682,8 @@ performing the required task. Default value is True. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314304,6 +313710,8 @@ Datastore name Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314331,6 +313739,8 @@ Specifies whether to ensure data accessibility. Default value is True. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314358,6 +313768,8 @@ Name of the DVS containing the portgroups. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314385,6 +313797,8 @@ New datastore name. Service instance (vim.ServiceInstance) of the vCenter/ESXi host. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -314442,9 +313856,14 @@ if all the parameters were reset, and individual keys for each parameter indicating which succeeded or failed, per host. .UNINDENT .sp -CLI Example: +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +\fBsyslog_config\fP can be passed as a quoted, comma\-separated string. See CLI Example for details. +.UNINDENT +.UNINDENT .sp -\fBsyslog_config\fP can be passed as a quoted, comma\-separated string, e.g. +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -315148,6 +314567,8 @@ Placement information of the virtual machine .B service_instance vCenter service instance for connection and configuration .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -315182,6 +314603,8 @@ Default value is None. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -315217,6 +314640,8 @@ Name of the DVS containing the portgroups. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -315253,6 +314678,8 @@ Name of the DVS to be updated. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -315385,6 +314812,8 @@ Dictionary containing the changes to apply to the policy. Service instance (vim.ServiceInstance) of the vCenter. Default is None. .UNINDENT +.sp +CLI Example: .INDENT 7.0 .INDENT 3.5 .sp @@ -316191,22 +315620,21 @@ salt \(aq*\(aq certutil.add_store salt://cert.cer "TrustedPublisher" .INDENT 0.0 .TP .B salt.modules.win_certutil.add_store(source, store, retcode=False, saltenv=\(aqbase\(aq) -Add the given cert into the given Certificate Store +Add the cert to the given Certificate Store .INDENT 7.0 .TP -.B source -The source certificate file this can be in the form -salt://path/to/file +.B source (str): +The source certificate file. This is either the path to a local file or +a file from the file server in the form of \fBsalt://path/to/file\fP .TP -.B store +.B store (str): The certificate store to add the certificate to .TP -.B retcode -If true, return the retcode instead of stdout. Default is \fBFalse\fP +.B retcode (bool): +If \fBTrue\fP, return the retcode instead of stdout. Default is \fBFalse\fP .TP -.B saltenv -The salt environment to use this is ignored if the path -is local +.B saltenv (str): +The salt environment to use. This is ignored if the path is local .UNINDENT .sp CLI Example: @@ -316216,6 +315644,7 @@ CLI Example: .nf .ft C salt \(aq*\(aq certutil.add_store salt://cert.cer TrustedPublisher +salt \(aq*\(aq certutil.add_store C:\epath\eto\elocal.cer TrustedPublisher .ft P .fi .UNINDENT @@ -316224,22 +315653,21 @@ salt \(aq*\(aq certutil.add_store salt://cert.cer TrustedPublisher .INDENT 0.0 .TP .B salt.modules.win_certutil.del_store(source, store, retcode=False, saltenv=\(aqbase\(aq) -Delete the given cert into the given Certificate Store +Delete the cert from the given Certificate Store .INDENT 7.0 .TP -.B source -The source certificate file this can be in the form -salt://path/to/file +.B source (str): +The source certificate file. This is either the path to a local file or +a file from the file server in the form of \fBsalt://path/to/file\fP .TP -.B store +.B store (str): The certificate store to delete the certificate from .TP -.B retcode -If true, return the retcode instead of stdout. Default is \fBFalse\fP +.B retcode (bool): +If \fBTrue\fP, return the retcode instead of stdout. Default is \fBFalse\fP .TP -.B saltenv -The salt environment to use this is ignored if the path -is local +.B saltenv (str): +The salt environment to use. This is ignored if the path is local .UNINDENT .sp CLI Example: @@ -316249,6 +315677,7 @@ CLI Example: .nf .ft C salt \(aq*\(aq certutil.del_store salt://cert.cer TrustedPublisher +salt \(aq*\(aq certutil.del_store C:\epath\eto\elocal.cer TrustedPublisher .ft P .fi .UNINDENT @@ -316256,12 +315685,21 @@ salt \(aq*\(aq certutil.del_store salt://cert.cer TrustedPublisher .UNINDENT .INDENT 0.0 .TP -.B salt.modules.win_certutil.get_cert_serial(cert_file) +.B salt.modules.win_certutil.get_cert_serial(cert_file, saltenv=\(aqbase\(aq) Get the serial number of a certificate file .INDENT 7.0 .TP -.B cert_file -The certificate file to find the serial for +.B cert_file (str): +The certificate file to find the serial for. Can be a local file or a +a file on the file server (\fBsalt://\fP) +.UNINDENT +.INDENT 7.0 +.TP +.B Returns +The serial number of the certificate if found, otherwise None +.TP +.B Return type +\fI\%str\fP .UNINDENT .sp CLI Example: @@ -316282,9 +315720,17 @@ salt \(aq*\(aq certutil.get_cert_serial Get all of the certificate serials in the specified store .INDENT 7.0 .TP -.B store +.B store (str): The store to get all the certificate serials from .UNINDENT +.INDENT 7.0 +.TP +.B Returns +A list of serial numbers found, or an empty list if none found +.TP +.B Return type +\fI\%list\fP +.UNINDENT .sp CLI Example: .INDENT 7.0 @@ -317602,8 +317048,9 @@ Default is False .INDENT 7.0 .INDENT 3.5 \fBremove_config\fP may fail to reset the DSC environment if any -of the files in the \fBConfigurationStatus\fP directory. If you -wait a few minutes and run again, it may complete successfully. +of the files in the \fBConfigurationStatus\fP directory are in +use. If you wait a few minutes and run again, it may complete +successfully. .UNINDENT .UNINDENT @@ -317726,6 +317173,8 @@ New in version 2017.7.0. .sp Any additional parameters expected by the configuration script. These must be defined in the script itself. +Note that these are passed to the script (the outermost scope), and +not to the dsc configuration inside the script (the inner scope). .sp New in version 2017.7.0. @@ -317767,6 +317216,18 @@ salt \(aq*\(aq dsc.run_config C:\e\eDSC\e\eWebsiteConfig.ps1 salt://dsc/configs/ .fi .UNINDENT .UNINDENT +.sp +To cache a config script to the system from the master and compile it, passing in \fIscript_parameters\fP: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq dsc.run_config path=C:\e\eDSC\e\eWebsiteConfig.ps1 source=salt://dsc/configs/WebsiteConfig.ps1 script_parameters="\-hostname \(aqmy\-computer\(aq \-ip \(aq192.168.1.10\(aq \-DnsArray \(aq192.168.1.3\(aq,\(aq192.168.1.4\(aq,\(aq1.1.1.1\(aq" +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP @@ -318899,40 +318360,6 @@ salt \(aq*\(aq file.mkdir C:\eTemp\e Administrators "{\(aqjsnuffy\(aq: {\(aqperm .UNINDENT .INDENT 0.0 .TP -.B salt.modules.win_file.readlink(path) -Return the path that a symlink points to -.sp -This is only supported on Windows Vista or later. -.sp -Inline with Unix behavior, this function will raise an error if the path is -not a symlink, however, the error raised will be a SaltInvocationError, not -an OSError. -.INDENT 7.0 -.TP -.B Parameters -\fBpath\fP (\fI\%str\fP) \-\- The path to the symlink -.TP -.B Returns -The path that the symlink points to -.TP -.B Return type -\fI\%str\fP -.UNINDENT -.sp -CLI Example: -.INDENT 7.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \(aq*\(aq file.readlink /path/to/link -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.INDENT 0.0 -.TP .B salt.modules.win_file.remove(path, force=False) Remove the named file or directory .INDENT 7.0 @@ -319060,9 +318487,9 @@ Set permissions for the given path .sp A dictionary containing the user/group and the basic permissions to grant, ie: \fB{\(aquser\(aq: {\(aqperms\(aq: \(aqbasic_permission\(aq}}\fP\&. You can also -set the \fBapplies_to\fP setting here. The default for \fBapplise_to\fP -is \fBthis_folder_subfolders_files\fP\&. Specify another \fBapplies_to\fP -setting like this: +set the \fBapplies_to\fP setting here for directories. The default for +\fBapplies_to\fP is \fBthis_folder_subfolders_files\fP\&. Specify another +\fBapplies_to\fP setting like this: .INDENT 2.0 .INDENT 3.5 .sp @@ -319199,7 +318626,7 @@ salt \(aq*\(aq file.stats /etc/passwd .UNINDENT .INDENT 0.0 .TP -.B salt.modules.win_file.symlink(src, link) +.B salt.modules.win_file.symlink(src, link, force=False) Create a symbolic link to a file .sp This is only supported with Windows Vista or later and must be executed by @@ -319215,7 +318642,10 @@ If it doesn\(aqt, an error will be raised. .IP \(bu 2 \fBsrc\fP (\fI\%str\fP) \-\- The path to a file or directory .IP \(bu 2 -\fBlink\fP (\fI\%str\fP) \-\- The path to the link +\fBlink\fP (\fI\%str\fP) \-\- The path to the link. Must be an absolute path +.IP \(bu 2 +\fBforce\fP (\fI\%bool\fP) \-\- Overwrite an existing symlink with the same name +\&.. versionadded:: 3005 .UNINDENT .TP .B Returns @@ -319293,6 +318723,135 @@ salt \(aq*\(aq file.user_to_uid myusername .UNINDENT .UNINDENT .UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.win_file.version(path) +New in version 3005. + +.sp +Get the version of a file. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Not all files have version information. The following are common file +types that contain version information: +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\&.exe +.IP \(bu 2 +\&.dll +.IP \(bu 2 +\&.sys +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +\fBpath\fP (\fI\%str\fP) \-\- The path to the file. +.TP +.B Returns +.INDENT 7.0 +.TP +.B The version of the file if the file contains it. Otherwise, an +empty string will be returned. +.UNINDENT + +.TP +.B Return type +\fI\%str\fP +.TP +.B Raises +.INDENT 7.0 +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If the file does not exist +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If the path is not a file +.UNINDENT +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt * file.version C:\eWindows\enotepad.exe +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.win_file.version_details(path) +New in version 3005. + +.sp +Get file details for a file. Similar to what\(aqs in the details tab on the +file properties. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Not all files have version information. The following are common file +types that contain version information: +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\&.exe +.IP \(bu 2 +\&.dll +.IP \(bu 2 +\&.sys +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +\fBpath\fP (\fI\%str\fP) \-\- The path to the file. +.TP +.B Returns +.INDENT 7.0 +.TP +.B A dictionary containing details about the file related to version. +An empty dictionary if the file contains no version information. +.UNINDENT + +.TP +.B Return type +\fI\%dict\fP +.TP +.B Raises +.INDENT 7.0 +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If the file does not exist +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If the path is not a file +.UNINDENT +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt * file.version_details C:\eWindows\enotepad.exe +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.modules.win_firewall .sp Module for configuring Windows Firewall using \fBnetsh\fP @@ -326840,6 +326399,273 @@ salt \(aq*\(aq shadow.unlock_account .UNINDENT .UNINDENT .UNINDENT +.SS salt.modules.win_shortcut +.sp +Execution module for creating shortcuts on Windows. Handles file shortcuts +(\fI\&.lnk\fP) and url shortcuts (\fI\&.url\fP). Allows for the configuration of icons and +hot keys on file shortcuts. Changing the icon and hot keys are unsupported for +url shortcuts. +.sp +New in version 3005. + +.INDENT 0.0 +.TP +.B salt.modules.win_shortcut.create(path, target, arguments=\(aq\(aq, description=\(aq\(aq, hot_key=\(aq\(aq, icon_index=0, icon_location=\(aq\(aq, window_style=\(aqNormal\(aq, working_dir=\(aq\(aq, backup=False, force=False, make_dirs=False, user=None) +Create a new shortcut. This can be a file shortcut (\fB\&.lnk\fP) or a url +shortcut (\fB\&.url\fP). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBpath\fP (\fI\%str\fP) \-\- The full path to the shortcut. Must have a \fI\&.lnk\fP or \fI\&.url\fP +file extension. +.IP \(bu 2 +\fBtarget\fP (\fI\%str\fP) \-\- The full path to the target +.IP \(bu 2 +\fBarguments\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- Any arguments to be passed to the target +.IP \(bu 2 +\fBdescription\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The description for the shortcut. This is +shown in the \fBComment\fP field of the dialog box. Default is an +empty string +.IP \(bu 2 +\fBhot_key\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- +.sp +A combination of hot Keys to trigger this +shortcut. This is something like \fBCtrl+Alt+D\fP\&. This is shown in +the \fBShortcut key\fP field in the dialog box. Default is an empty +string. Available options are: +.INDENT 2.0 +.IP \(bu 2 +Ctrl +.IP \(bu 2 +Alt +.IP \(bu 2 +Shift +.IP \(bu 2 +Ext +.UNINDENT + +.IP \(bu 2 +\fBicon_index\fP (\fI\%int\fP\fI, \fP\fIoptional\fP) \-\- The index for the icon to use in files that +contain multiple icons. Default is 0 +.IP \(bu 2 +\fBicon_location\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The full path to a file containing icons. +This is shown in the \fBChange Icon\fP dialog box by clicking the +\fBChange Icon\fP button. If no file is specified and a binary is +passed as the target, Windows will attempt to get the icon from the +binary file. Default is an empty string +.IP \(bu 2 +\fBwindow_style\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- +.sp +The window style the program should start +in. This is shown in the \fBRun\fP field of the dialog box. Default is +\fBNormal\fP\&. Valid options are: +.INDENT 2.0 +.IP \(bu 2 +Normal +.IP \(bu 2 +Minimized +.IP \(bu 2 +Maximized +.UNINDENT + +.IP \(bu 2 +\fBworking_dir\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The full path to the working directory for +the program to run in. This is shown in the \fBStart in\fP field of +the dialog box. +.IP \(bu 2 +\fBbackup\fP (\fI\%bool\fP\fI, \fP\fIoptional\fP) \-\- If there is already a shortcut with the same +name, set this value to \fBTrue\fP to backup the existing shortcut and +continue creating the new shortcut. Default is \fBFalse\fP +.IP \(bu 2 +\fBforce\fP (\fI\%bool\fP\fI, \fP\fIoptional\fP) \-\- If there is already a shortcut with the same +name and you aren\(aqt backing up the shortcut, set this value to +\fBTrue\fP to remove the existing shortcut and create a new with these +settings. Default is \fBFalse\fP +.IP \(bu 2 +\fBmake_dirs\fP (\fI\%bool\fP\fI, \fP\fIoptional\fP) \-\- If the parent directory structure does not +exist for the new shortcut, create it. Default is \fBFalse\fP +.IP \(bu 2 +\fBuser\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The user to be the owner of any directories +created by setting \fBmake_dirs\fP to \fBTrue\fP\&. If no value is passed +Salt will use the user account that it is running under. Default is +an empty string. +.UNINDENT +.TP +.B Returns +True if successful +.TP +.B Return type +\fI\%bool\fP +.TP +.B Raises +.INDENT 7.0 +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If the path is not a \fB\&.lnk\fP or \fB\&.url\fP file + extension. +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If there is an existing shortcut with the same + name and \fBbackup\fP and \fBforce\fP are both \fBFalse\fP +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If the parent directory is not created and + \fBmake_dirs\fP is \fBFalse\fP +.IP \(bu 2 +\fBCommandExecutionError\fP \-\- If there was an error creating the parent + directories +.UNINDENT +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +# Create a shortcut and set the \(ga\(gaShortcut key\(ga\(ga (\(ga\(gahot_key\(ga\(ga) +salt * shortcut.create "C:\epath\eto\eshortcut.lnk" "C:\eWindows\enotepad.exe" hot_key="Ctrl+Alt+N" + +# Create a shortcut and change the icon to the 3rd one in the icon file +salt * shortcut.create "C:\epath\eto\eshortcut.lnk" "C:\eWindows\enotepad.exe" icon_location="C:\epath\eto\eicon.ico" icon_index=2 + +# Create a shortcut and change the startup mode to full screen +salt * shortcut.create "C:\epath\eto\eshortcut.lnk" "C:\eWindows\enotepad.exe" window_style="Maximized" + +# Create a shortcut and change the icon +salt * shortcut.create "C:\epath\eto\eshortcut.lnk" "C:\eWindows\enotepad.exe" icon_location="C:\epath\eto\eicon.ico" + +# Create a shortcut and force it to overwrite an existing shortcut +salt * shortcut.create "C:\epath\eto\eshortcut.lnk" "C:\eWindows\enotepad.exe" force=True + +# Create a shortcut and create any parent directories if they are missing +salt * shortcut.create "C:\epath\eto\eshortcut.lnk" "C:\eWindows\enotepad.exe" make_dirs=True +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.win_shortcut.get(path) +Gets the properties for a shortcut +.INDENT 7.0 +.TP +.B Parameters +\fBpath\fP (\fI\%str\fP) \-\- The path to the shortcut. Must have a \fI\&.lnk\fP or \fI\&.url\fP file +extension. +.TP +.B Returns +.INDENT 7.0 +.TP +.B A dictionary containing all available properties for the specified +shortcut +.UNINDENT + +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt * shortcut.get path="C:\epath\eto\eshortcut.lnk" +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.win_shortcut.modify(path, target=\(aq\(aq, arguments=\(aq\(aq, description=\(aq\(aq, hot_key=\(aq\(aq, icon_index=0, icon_location=\(aq\(aq, window_style=\(aqNormal\(aq, working_dir=\(aq\(aq) +Modify an existing shortcut. This can be a file shortcut (\fB\&.lnk\fP) or a +url shortcut (\fB\&.url\fP). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBpath\fP (\fI\%str\fP) \-\- The full path to the shortcut. Must have a \fI\&.lnk\fP or \fI\&.url\fP +file extension. +.IP \(bu 2 +\fBtarget\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The full path to the target +.IP \(bu 2 +\fBarguments\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- Any arguments to be passed to the target +.IP \(bu 2 +\fBdescription\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The description for the shortcut. This is +shown in the \fBComment\fP field of the dialog box. Default is an +empty string +.IP \(bu 2 +\fBhot_key\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- +.sp +A combination of hot Keys to trigger this +shortcut. This is something like \fBCtrl+Alt+D\fP\&. This is shown in +the \fBShortcut key\fP field in the dialog box. Default is an empty +string. Available options are: +.INDENT 2.0 +.IP \(bu 2 +Ctrl +.IP \(bu 2 +Alt +.IP \(bu 2 +Shift +.IP \(bu 2 +Ext +.UNINDENT + +.IP \(bu 2 +\fBicon_index\fP (\fI\%int\fP\fI, \fP\fIoptional\fP) \-\- The index for the icon to use in files that +contain multiple icons. Default is 0 +.IP \(bu 2 +\fBicon_location\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The full path to a file containing icons. +This is shown in the \fBChange Icon\fP dialog box by clicking the +\fBChange Icon\fP button. If no file is specified and a binary is +passed as the target, Windows will attempt to get the icon from the +binary file. Default is an empty string +.IP \(bu 2 +\fBwindow_style\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- +.sp +The window style the program should start +in. This is shown in the \fBRun\fP field of the dialog box. Default is +\fBNormal\fP\&. Valid options are: +.INDENT 2.0 +.IP \(bu 2 +Normal +.IP \(bu 2 +Minimized +.IP \(bu 2 +Maximized +.UNINDENT + +.IP \(bu 2 +\fBworking_dir\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The full path to the working directory for +the program to run in. This is shown in the \fBStart in\fP field of +the dialog box. +.UNINDENT +.TP +.B Returns +True if successful +.TP +.B Return type +\fI\%bool\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +# Modify an existing shortcut. Set it to target notepad.exe +salt * shortcut.modify "C:\epath\eto\eshortcut.lnk" "C:\eWindows\enotepad.exe" +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.modules.win_smtp_server .sp Module for managing IIS SMTP server configuration on Windows servers. @@ -335674,8 +335500,8 @@ Alternate constructor that accept multiple recipients and rooms .B filter(record) Determine if the specified record is to be logged. .sp -Returns True if the record should be logged, or False otherwise. -If deemed appropriate, the record may be modified in\-place. +Is the specified record to be logged? Returns 0 for no, nonzero for +yes. If deemed appropriate, the record may be modified in\-place. .UNINDENT .UNINDENT .INDENT 0.0 @@ -335715,6 +335541,48 @@ xmpp.send_msg recipients=[\(aqadmins@xmpp.example.com\(aq] rooms=[\( .UNINDENT .UNINDENT .UNINDENT +.SS salt.modules.yaml +.sp +Yaml helper module for troubleshooting yaml +.sp +New in version 3005. + +.INDENT 0.0 +.TP +.B depends +yamllint +.UNINDENT +.INDENT 0.0 +.TP +.B salt.modules.yaml.lint(source, saltenv=None, pre_render=None, **kwargs) +lint the output after detecting a sucsessful render. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\fI\%str\fP) \-\- managed source file +.IP \(bu 2 +\fBsaltenv\fP (\fI\%str\fP) \-\- the saltenv to use, defaults +to minions enviroment or base if not set +.IP \(bu 2 +\fBpre_render\fP (\fI\%str\fP) \-\- The render options passed to +slsutil.renderer other wise file is cached and loaded as stream +.UNINDENT +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq yamllint.lint salt://example/bad_yaml.sls +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.modules.yumpkg .sp Support for YUM/DNF @@ -335808,6 +335676,9 @@ option). If the .repo file in which the repo exists does not contain any other repo configuration, the file itself will be deleted. .sp +Strict parsing of configuration files is the default, this can be disabled +using the \fBstrict_config\fP keyword argument set to False +.sp CLI Examples: .INDENT 7.0 .INDENT 3.5 @@ -335815,7 +335686,7 @@ CLI Examples: .nf .ft C salt \(aq*\(aq pkg.del_repo myrepo -salt \(aq*\(aq pkg.del_repo myrepo basedir=/path/to/dir +salt \(aq*\(aq pkg.del_repo myrepo basedir=/path/to/dir strict_config=False salt \(aq*\(aq pkg.del_repo myrepo basedir=/path/to/dir,/path/to/another/dir .ft P .fi @@ -336954,6 +336825,9 @@ salt \(aq*\(aq pkg.list_repo_pkgs \(aqpython2\-*\(aq byrepo=True .B salt.modules.yumpkg.list_repos(basedir=None, **kwargs) Lists all repos in (default: all dirs in \fIreposdir\fP yum option). .sp +Strict parsing of configuration files is the default, this can be disabled +using the \fBstrict_config\fP keyword argument set to False +.sp CLI Example: .INDENT 7.0 .INDENT 3.5 @@ -336962,7 +336836,7 @@ CLI Example: .ft C salt \(aq*\(aq pkg.list_repos salt \(aq*\(aq pkg.list_repos basedir=/path/to/dir -salt \(aq*\(aq pkg.list_repos basedir=/path/to/dir,/path/to/another/dir +salt \(aq*\(aq pkg.list_repos basedir=/path/to/dir,/path/to/another/dir strict_config=False .ft P .fi .UNINDENT @@ -337045,6 +336919,9 @@ Key/Value pairs may also be removed from a repo\(aqs configuration by setting a key to a blank value. Bear in mind that a name cannot be deleted, and a baseurl can only be deleted if a mirrorlist is specified (or vice versa). .sp +Strict parsing of configuration files is the default, this can be disabled +using the \fBstrict_config\fP keyword argument set to False +.sp CLI Examples: .INDENT 7.0 .INDENT 3.5 @@ -337052,7 +336929,7 @@ CLI Examples: .nf .ft C salt \(aq*\(aq pkg.mod_repo reponame enabled=1 gpgcheck=1 -salt \(aq*\(aq pkg.mod_repo reponame basedir=/path/to/dir enabled=1 +salt \(aq*\(aq pkg.mod_repo reponame basedir=/path/to/dir enabled=1 strict_config=False salt \(aq*\(aq pkg.mod_repo reponame baseurl= mirrorlist=http://host.com/ .ft P .fi @@ -337835,6 +337712,18 @@ Compares Zabbix object definition against existing Zabbix object. Params that are different from existing object. Result extended by object ID can be passed directly to Zabbix API update method. .UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq zabbix.compare_params new_zabbix_object_dict existing_zabbix_onject_dict +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP @@ -337900,6 +337789,18 @@ Get ID of single Zabbix object specified by its name. .B Returns object ID .UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq zabbix.get_object_id_by_params object_type params=zabbix_api_query_parameters_dict +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP @@ -337913,6 +337814,18 @@ Make ZABBIX_ID_MAPPER constant available to state modules. .B Returns ZABBIX_ID_MAPPER .UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq zabbix.get_zabbix_id_mapper +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP @@ -338960,6 +338873,18 @@ as a value. Definition of the object is done via dict with keys "query_object" a .B Returns Params structure with values converted to string for further comparison purposes .UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq zabbix.substitute_params \(aq{"query_object": "object_name", "query_name": "specific_object_name"}\(aq +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP @@ -339008,7 +338933,7 @@ salt \(aq*\(aq zabbix.template_get templateids="[\(aq10050\(aq, \(aq10001\(aq]" .INDENT 0.0 .TP .B salt.modules.zabbix.user_addmedia(userids, active, mediatypeid, period, sendto, severity, **connection_args) -Add new media to multiple users. +Add new media to multiple users. Available only for Zabbix version 3.4 or older. .sp New in version 2016.3.0. @@ -339145,7 +339070,7 @@ salt \(aq*\(aq zabbix.user_delete 15 .INDENT 0.0 .TP .B salt.modules.zabbix.user_deletemedia(mediaids, **connection_args) -Delete media by id. +Delete media by id. Available only for Zabbix version 3.4 or older. .sp New in version 2016.3.0. @@ -344012,32 +343937,6 @@ Query range .UNINDENT .INDENT 0.0 .TP -.B salt.modules.zypperpkg.add_lock(name, root=None, **kwargs) -Deprecated since version 3003: This function is deprecated. Please use \fBhold()\fP instead. - -.sp -Add a package lock. Specify packages to lock by exact name. -.INDENT 7.0 -.TP -.B root -operate on a different root directory. -.UNINDENT -.sp -CLI Example: -.INDENT 7.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \(aq*\(aq pkg.add_lock -salt \(aq*\(aq pkg.add_lock ,, -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.INDENT 0.0 -.TP .B salt.modules.zypperpkg.available_version(*names, **kwargs) This function is an alias of \fBlatest_version\fP\&. .INDENT 7.0 @@ -344246,7 +344145,7 @@ salt \(aq*\(aq pkg.get_repo alias .UNINDENT .INDENT 0.0 .TP -.B salt.modules.zypperpkg.hold(name=None, pkgs=None, **kwargs) +.B salt.modules.zypperpkg.hold(name=None, pkgs=None, root=None, **kwargs) New in version 3003. .sp @@ -344260,6 +344159,9 @@ hold. .B pkgs A list of packages to hold. The \fBname\fP parameter will be ignored if this option is passed. +.TP +.B root +operate on a different root directory. .UNINDENT .sp CLI Example: @@ -344598,6 +344500,48 @@ salt \(aq*\(aq pkg.list_downloaded .UNINDENT .INDENT 0.0 .TP +.B salt.modules.zypperpkg.list_holds(pattern=None, full=True, root=None, **kwargs) +New in version 3005. + +.sp +List information on locked packages. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This function returns the computed output of \fBlist_locks\fP +to show exact locked packages. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B pattern +Regular expression used to match the package name +.TP +.B full +True +Show the full hold definition including version and epoch. Set to +\fBFalse\fP to return just the name of the package(s) being held. +.TP +.B root +Operate on a different root directory. +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +salt \(aq*\(aq pkg.list_holds +salt \(aq*\(aq pkg.list_holds full=False +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP .B salt.modules.zypperpkg.list_installed_patches(root=None, **kwargs) New in version 2017.7.0. @@ -345355,35 +345299,6 @@ salt \(aq*\(aq pkg.remove pkgs=\(aq["foo", "bar"]\(aq .UNINDENT .INDENT 0.0 .TP -.B salt.modules.zypperpkg.remove_lock(name, root=None, **kwargs) -Deprecated since version 3003: This function is deprecated. Please use \fBunhold()\fP instead. - -.sp -Remove specified package lock. -.INDENT 7.0 -.TP -.B name -A package name, or a comma\-separated list of package names. -.TP -.B root -operate on a different root directory. -.UNINDENT -.sp -CLI Example: -.INDENT 7.0 -.INDENT 3.5 -.sp -.nf -.ft C -salt \(aq*\(aq pkg.remove_lock -salt \(aq*\(aq pkg.remove_lock ,, -.ft P -.fi -.UNINDENT -.UNINDENT -.UNINDENT -.INDENT 0.0 -.TP .B salt.modules.zypperpkg.resolve_capabilities(pkgs, refresh=False, root=None, **kwargs) New in version 2018.3.0. @@ -345519,7 +345434,7 @@ salt \(aq*\(aq pkg.services_need_restart .UNINDENT .INDENT 0.0 .TP -.B salt.modules.zypperpkg.unhold(name=None, pkgs=None, **kwargs) +.B salt.modules.zypperpkg.unhold(name=None, pkgs=None, root=None, **kwargs) New in version 3003. .sp @@ -345533,6 +345448,9 @@ unhold. .B pkgs A list of packages to unhold. The \fBname\fP parameter will be ignored if this option is passed. +.TP +.B root +operate on a different root directory. .UNINDENT .sp CLI Example: @@ -350266,7 +350184,7 @@ can be set in the master config to change the output of the \fBsalt\fP command o set in the minion config to change the output of the \fBsalt\-call\fP command. .INDENT 0.0 .TP -.B state_verbose +.B state_verbose: By default \fIstate_verbose\fP is set to \fITrue\fP, setting this to \fIFalse\fP will instruct the highstate outputter to omit displaying anything in green, this means that nothing with a result of True and no changes will not be printed @@ -350319,6 +350237,16 @@ value might be very long and hard to read. If \fIstate_output\fP uses the terse output, set this to \fITrue\fP for an aligned output format. If you wish to use a custom format, this can be set to a string. +.TP +.B state_output_pct: +Set \fIstate_output_pct\fP to \fITrue\fP in order to add "Success %" and "Failure %" +to the "Summary" section at the end of the highstate output. +.TP +.B state_compress_ids: +Set \fIstate_compress_ids\fP to \fITrue\fP to aggregate information about states +which have multiple "names" under the same state ID in the highstate output. +This is useful in combination with the \fIterse_id\fP value set in the +\fIstate_output\fP option when states are using the \fInames\fP state parameter. .UNINDENT .sp Example usage: @@ -352207,7 +352135,7 @@ New in version 2014.7.0. .B depends .INDENT 7.0 .IP \(bu 2 -python\-etcd +python\-etcd or etcd3\-py .UNINDENT .UNINDENT .sp @@ -352226,6 +352154,59 @@ my_etcd_config: .UNINDENT .UNINDENT .sp +In order to choose whether to use etcd API v2 or v3, you can put the following +configuration option in the same place as your etcd configuration. This option +defaults to true, meaning you will use v2 unless you specify otherwise. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.require_v2: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +When using API v3, there are some specific options available to be configured +within your etcd profile. They are defaulted to the following... +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.encode_keys: False +etcd.encode_values: True +etcd.raw_keys: False +etcd.raw_values: False +etcd.unicode_errors: "surrogateescape" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_keys\fP indicates whether you want to pre\-encode keys using msgpack before +adding them to etcd. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +If you set \fBetcd.encode_keys\fP to \fBTrue\fP, all recursive functionality will no longer work. +This includes \fBtree\fP and \fBls\fP and all other methods if you set \fBrecurse\fP/\fBrecursive\fP to \fBTrue\fP\&. +This is due to the fact that when encoding with msgpack, keys like \fB/salt\fP and \fB/salt/stack\fP will have +differing byte prefixes, and etcd v3 searches recursively using prefixes. +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_values\fP indicates whether you want to pre\-encode values using msgpack before +adding them to etcd. This defaults to \fBTrue\fP to avoid data loss on non\-string values wherever possible. +.sp +\fBetcd.raw_keys\fP determines whether you want the raw key or a string returned. +.sp +\fBetcd.raw_values\fP determines whether you want the raw value or a string returned. +.sp +\fBetcd.unicode_errors\fP determines what you policy to follow when there are encoding/decoding errors. +.sp After the profile is created, configure the external pillar system to use it. Optionally, a root may be specified. .INDENT 0.0 @@ -356296,6 +356277,48 @@ These columns define list grouping The range for with_lists is 1 to number_of_fields, inclusive. Numbers outside this range are ignored. .sp +If you specify \fIas_json: True\fP in the mapping expression and query only for +single value, returned data are considered in JSON format and will be merged +directly. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +ext_pillar: + \- sql_base: + \- query: "SELECT json_pillar FROM pillars WHERE minion_id = %s" + as_json: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The processed JSON entries are recursively merged in a single dictionary. +Additionnaly if \fIas_list\fP is set to \fITrue\fP the lists will be merged in case of collision. +.sp +For instance the following rows: +.INDENT 0.0 +.INDENT 3.5 +{"a": {"b": [1, 2]}, "c": 3} +{"a": {"b": [1, 3]}, "d": 4} +.UNINDENT +.UNINDENT +.sp +will result in the following pillar with \fIas_list=False\fP +.INDENT 0.0 +.INDENT 3.5 +{"a": {"b": [1, 3], "c": 3, "d": 4} +.UNINDENT +.UNINDENT +.sp +and in with \fIas_list=True\fP +.INDENT 0.0 +.INDENT 3.5 +{"a": {"b": [1, 2, 3], "c": 3, "d": 4} +.UNINDENT +.UNINDENT +.sp Finally, if you pass the queries in via a mapping, the key will be the first level name where as passing them in as a list will place them in the root. This isolates the query results into their own subtrees. @@ -356306,6 +356329,9 @@ could even do joins or subqueries in case your minion_id is stored elsewhere. It is capable of handling single rows or multiple rows per minion. .sp Configuration of the connection depends on the adapter in use. +.sp +New in version 3005: The \fIas_json\fP parameter. + .SS More complete example for MySQL (to also show configuration) .INDENT 0.0 .INDENT 3.5 @@ -356337,6 +356363,10 @@ This class receives and processes the database rows in a database agnostic way. .INDENT 7.0 .TP +.B as_json = False +.UNINDENT +.INDENT 7.0 +.TP .B as_list = False .UNINDENT .INDENT 7.0 @@ -358012,6 +358042,12 @@ This is a simple proxy\-minion designed to connect to and communicate with the b T} _ T{ +\fBrestconf\fP +T} T{ +Proxy Minion to manage RESTCONF Devices +T} +_ +T{ \fBssh_sample\fP T} T{ This is a simple proxy\-minion designed to connect to and communicate with a server that exposes functionality via SSH. @@ -362123,6 +362159,136 @@ Test function so we have something to call from a state .B salt.proxy.rest_sample.uptodate(name) Call the REST endpoint to see if the packages on the "server" are up to date. .UNINDENT +.SS salt.proxy.restconf +.sp +Proxy Minion to manage RESTCONF Devices +.INDENT 0.0 +.TP +.B codeauthor +Jamie (Bear) Murphy <\fI\%jamiemurphyit@gmail.com\fP> +.TP +.B maturity +new +.TP +.B platform +any +.UNINDENT +.SS Usage +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +To be able to use this module you need to enable RESTCONF on your device +and have https enabled. +.sp +Cisco Configuration example: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +switch# conf t +switch(config)# restconf +switch(config)# ip http secure\-server +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +RESTCONF requires modern OS distributions. +This plugin has been written specifically to use JSON RESTCONF endpoints +.UNINDENT +.UNINDENT +.SS Pillar +.sp +The \fBrestconf\fP proxy configuration requires the following parameters in order +to connect to the network switch: +.INDENT 0.0 +.TP +.B transport: \fBhttps\fP (str) +Specifies the type of connection transport to use. Valid values for the +connection are \fBhttps\fP, and \fBhttp\fP\&. +The RESTCONF standard explicitly requires https, but http is included as an option +as some manufacturers have ignored this requirement. +.TP +.B hostname: (str) +The IP address or DNS host name of the RESTCONF device. +.TP +.B username: (str) +The username for the device to authenticate the RESTCONF requests. +.TP +.B password: (str) +The password for the device to authenticate the RESTCONF requests. +.TP +.B verify: \fBTrue\fP or \fBFalse\fP (str, optional, default:true) +Verify the RESTCONF SSL certificate? +.sp +When there is no certificate configuration on the device and this option is +set as \fBTrue\fP (default), the commands will fail with the following error: +\fBSSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed\fP\&. +.sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 +In this case, you either need to configure a proper certificate on the +device (\fIrecommended\fP), or bypass the checks setting this argument as \fBFalse\fP +with all the security risks considered as you may be MITM\(aqd. +.UNINDENT +.UNINDENT +.UNINDENT +.SS Proxy Pillar Example +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +proxy: + proxytype: restconf + host: switch1.example.com + username: example + password: example + verify: false +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.proxy.restconf.connection_test() +Runs a connection test via http/https. Returns an array. +.UNINDENT +.INDENT 0.0 +.TP +.B salt.proxy.restconf.init(opts) +Required. +Initialize device config and test an initial connection +.UNINDENT +.INDENT 0.0 +.TP +.B salt.proxy.restconf.initialized() +Connection finished initializing? +.UNINDENT +.INDENT 0.0 +.TP +.B salt.proxy.restconf.ping() +Triggers connection test. +Returns True or False +.UNINDENT +.INDENT 0.0 +.TP +.B salt.proxy.restconf.request(path, method=\(aqGET\(aq, dict_payload=None) +Trigger http request to device +.UNINDENT +.INDENT 0.0 +.TP +.B salt.proxy.restconf.shutdown(opts) +Closes connection with the device. +.UNINDENT .SS salt.proxy.ssh_sample .sp This is a simple proxy\-minion designed to connect to and communicate with @@ -362683,7 +362849,7 @@ _ T{ \fBansible\fP T} T{ -Read in an Ansible inventory file or script +Read in an Ansible inventory file or script. T} _ T{ @@ -362743,7 +362909,7 @@ _ .TE .SS salt.roster.ansible .sp -Read in an Ansible inventory file or script +Read in an Ansible inventory file or script. .sp Flat inventory files should be in the regular ansible inventory format. .INDENT 0.0 @@ -362751,6 +362917,7 @@ Flat inventory files should be in the regular ansible inventory format. .sp .nf .ft C +# /tmp/example_roster [servers] salt.gtmanfred.com ansible_ssh_user=gtmanfred ansible_ssh_host=127.0.0.1 ansible_ssh_port=22 ansible_ssh_pass=\(aqpassword\(aq @@ -362774,20 +362941,20 @@ then salt\-ssh can be used to hit any of them .sp .nf .ft C -[~]# salt\-ssh \-N all test.ping +[~]# salt\-ssh \-\-roster=ansible \-\-roster\-file=/tmp/example_roster \-N all test.ping salt.gtmanfred.com: True home: True -[~]# salt\-ssh \-N desktop test.ping +[~]# salt\-ssh \-\-roster=ansible \-\-roster\-file=/tmp/example_roster \-N desktop test.ping home: True -[~]# salt\-ssh \-N computers test.ping +[~]# salt\-ssh \-\-roster=ansible \-\-roster\-file=/tmp/example_roster \-N computers test.ping salt.gtmanfred.com: True home: True -[~]# salt\-ssh salt.gtmanfred.com test.ping +[~]# salt\-ssh \-\-roster=ansible \-\-roster\-file=/tmp/example_roster salt.gtmanfred.com test.ping salt.gtmanfred.com: True .ft P @@ -362802,6 +362969,7 @@ There is also the option of specifying a dynamic inventory, and generating it on .nf .ft C #!/bin/bash +# filename: /etc/salt/hosts echo \(aq{ "servers": [ "salt.gtmanfred.com" @@ -362844,7 +363012,7 @@ This is the format that an inventory script needs to output to work with ansible .sp .nf .ft C -[~]# salt\-ssh \-\-roster\-file /etc/salt/hosts salt.gtmanfred.com test.ping +[~]# salt\-ssh \-\-roster=ansible \-\-roster\-file /etc/salt/hosts salt.gtmanfred.com test.ping salt.gtmanfred.com: True .ft P @@ -362852,6 +363020,14 @@ salt.gtmanfred.com: .UNINDENT .UNINDENT .sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +A dynamic inventory script must have the executable bit set. In the above +example, \fBchmod +x /etc/salt/hosts\fP\&. +.UNINDENT +.UNINDENT +.sp Any of the [groups] or direct hostnames will return. The \(aqall\(aq is special, and returns everything. .INDENT 0.0 .TP @@ -372086,7 +372262,7 @@ SaltStack New .TP .B depends -python\-etcd +python\-etcd or etcd3\-py .TP .B platform all @@ -372117,6 +372293,20 @@ myetcd: .sp The \fBdriver\fP refers to the etcd module, \fBetcd.host\fP refers to the host that is hosting the etcd database and \fBetcd.port\fP refers to the port on that host. +.sp +In order to choose whether to use etcd API v2 or v3, you can put the following +configuration option in the same place as your etcd configuration. This option +defaults to true, meaning you will use v2 unless you specify otherwise. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.require_v2: True +.ft P +.fi +.UNINDENT +.UNINDENT .INDENT 0.0 .INDENT 3.5 .sp @@ -373330,7 +373520,7 @@ sls dumper. .UNINDENT .INDENT 7.0 .TP -.B yaml_multi_representers = {: , : , : , : , : , : , : , : , : , : , : , : , None: } +.B yaml_multi_representers = {: , : , : , : , : , : , : , : , : , : , : , : , : , None: } .UNINDENT .UNINDENT .INDENT 0.0 @@ -373924,6 +374114,12 @@ Installation of Composer Packages T} _ T{ +\fBconsul\fP +T} T{ +Consul Management +T} +_ +T{ \fBcron\fP T} T{ Management of cron, the Unix command scheduler @@ -375117,6 +375313,12 @@ Manage the Windows registry T} _ T{ +\fBrestconf\fP +T} T{ +RESTCONF State module for Proxy minions +T} +_ +T{ \fBrsync\fP T} T{ State to synchronize files and directories with rsync. @@ -375458,6 +375660,12 @@ Manage Windows features via the ServerManager powershell module. T} _ T{ +\fBwin_shortcut\fP +T} T{ +State module for creating shortcuts on Windows. +T} +_ +T{ \fBwin_smtp_server\fP T} T{ Module for managing IIS SMTP server configuration on Windows servers. @@ -376235,11 +376443,11 @@ New in version 2014.1.0. .INDENT 0.0 .TP -.B salt.states.archive.extracted(name, source, source_hash=None, source_hash_name=None, source_hash_update=False, skip_files_list_verify=False, skip_verify=False, password=None, options=None, list_options=None, force=False, overwrite=False, clean=False, clean_parent=False, user=None, group=None, if_missing=None, trim_output=False, use_cmd_unzip=None, extract_perms=True, enforce_toplevel=True, enforce_ownership_on=None, archive_format=None, **kwargs) +.B salt.states.archive.extracted(name, source, source_hash=None, source_hash_name=None, source_hash_update=False, skip_files_list_verify=False, skip_verify=False, password=None, options=None, list_options=None, force=False, overwrite=False, clean=False, clean_parent=False, user=None, group=None, if_missing=None, trim_output=False, use_cmd_unzip=None, extract_perms=True, enforce_toplevel=True, enforce_ownership_on=None, archive_format=None, use_etag=False, **kwargs) New in version 2014.1.0. .sp -Changed in version 2016.11.0: This state has been rewritten. Some arguments are new to this release +Changed in version 2016.11.0,3005: This state has been rewritten. Some arguments are new to this release and will not be available in the 2016.3 release cycle (and earlier). Additionally, the \fBZIP Archive Handling\fP section below applies specifically to the 2016.11.0 release (and newer). @@ -376849,6 +377057,18 @@ Changed in version 2016.11.0: If omitted, the archive format will be guessed bas of the \fBsource\fP argument. If the minion is running a release older than 2016.11.0, this option is required. +.UNINDENT +.INDENT 7.0 +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .sp \fBExamples\fP @@ -377508,10 +377728,18 @@ Azure (ARM) Compute State Module .sp New in version 2019.2.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer -<\fI\%devops@decisionlab.io\fP> +<\fI\%devops@eitr.tech\fP> .TP .B maturity new @@ -377725,6 +377953,14 @@ Azure (ARM) DNS State Module .sp New in version 3000. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer @@ -378122,10 +378358,18 @@ Azure (ARM) Network State Module .sp New in version 2019.2.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer -<\fI\%devops@decisionlab.io\fP> +<\fI\%devops@eitr.tech\fP> .TP .B maturity new @@ -379218,10 +379462,18 @@ Azure (ARM) Resource State Module .sp New in version 2019.2.0. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This cloud provider will be removed from Salt in version 3007 in favor of +the \fI\%saltext.azurerm Salt Extension\fP +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B maintainer -<\fI\%devops@decisionlab.io\fP> +<\fI\%devops@eitr.tech\fP> .TP .B maturity new @@ -383391,7 +383643,7 @@ contains a dict with region, key and keyid. .B lambda_funcname_format Please review the earlier example for the usage. The only substituable keys in the funcname format are {stage}, {api}, {resource}, {method}. -Any other keys or positional subsitution parameters will be flagged as an invalid input. +Any other keys or positional substitution parameters will be flagged as an invalid input. .TP .B authorization_type This field can be either \(aqNONE\(aq, or \(aqAWS_IAM\(aq. This will be applied to all methods in the given @@ -391512,7 +391764,7 @@ contains a dict with region, key and keyid. .UNINDENT .INDENT 0.0 .TP -.B salt.states.boto_vpc.request_vpc_peering_connection(name, requester_vpc_id=None, requester_vpc_name=None, peer_vpc_id=None, peer_vpc_name=None, conn_name=None, peer_owner_id=None, region=None, key=None, keyid=None, profile=None) +.B salt.states.boto_vpc.request_vpc_peering_connection(name, requester_vpc_id=None, requester_vpc_name=None, peer_vpc_id=None, peer_vpc_name=None, conn_name=None, peer_owner_id=None, peer_region=None, region=None, key=None, keyid=None, profile=None) .INDENT 7.0 .TP .B name @@ -391528,13 +391780,19 @@ Name tag of the requesting VPC. Exclusive with requester_vpc_id. String type. ID of the VPC tp crete VPC peering connection with. This can be a VPC in another account. Exclusive with peer_vpc_name. String type. .TP .B peer_vpc_name -Name tag of the VPC tp crete VPC peering connection with. This can only be a VPC the same account. Exclusive with peer_vpc_id. String type. +Name tag of the VPC tp crete VPC peering connection with. This can only be a VPC the same account and region. Exclusive with peer_vpc_id. String type. .TP .B conn_name The (optional) name to use for this VPC peering connection. String type. .TP .B peer_owner_id ID of the owner of the peer VPC. String type. If this isn\(aqt supplied AWS uses your account ID. Required if peering to a different account. +.TP +.B peer_region +Region of peer VPC. For inter\-region vpc peering connections. Not required for intra\-region peering connections. +.sp +New in version 3005. + .TP .B region Region to connect to. @@ -391746,7 +392004,7 @@ contains a dict with region, key and keyid. .UNINDENT .INDENT 0.0 .TP -.B salt.states.boto_vpc.vpc_peering_connection_present(name, requester_vpc_id=None, requester_vpc_name=None, peer_vpc_id=None, peer_vpc_name=None, conn_name=None, peer_owner_id=None, region=None, key=None, keyid=None, profile=None) +.B salt.states.boto_vpc.vpc_peering_connection_present(name, requester_vpc_id=None, requester_vpc_name=None, peer_vpc_id=None, peer_vpc_name=None, conn_name=None, peer_owner_id=None, peer_region=None, region=None, key=None, keyid=None, profile=None) .INDENT 7.0 .TP .B name @@ -391773,6 +392031,13 @@ The name to use for this VPC peering connection. .B peer_owner_id ID of the owner of the peer VPC. Defaults to your account ID, so a value is required if peering with a VPC in a different account. +.TP +.B peer_region +Region of peer VPC. For inter\-region vpc peering connections. Not required +for intra\-region peering connections. +.sp +New in version 3005. + .TP .B region Region to connect to. @@ -394490,6 +394755,90 @@ New in version 2014.1.4. A list of environment variables to be set prior to execution. .UNINDENT .UNINDENT +.SS salt.states.consul +.SS Consul Management +.sp +New in version 3005. + +.sp +The consul module is used to create and manage Consul ACLs +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +acl_present: + consul.acl_present: + \- id: 38AC8470\-4A83\-4140\-8DFD\-F924CD32917F + \- name: acl_name + \- rules: node "" {policy = "write"} service "" {policy = "read"} key "_rexec" {policy = "write"} + \- type: client + \- consul_url: http://localhost:8500 + +acl_delete: + consul.acl_absent: + \- id: 38AC8470\-4A83\-4140\-8DFD\-F924CD32917F +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.states.consul.acl_absent(name, id=None, token=None, consul_url=\(aqhttp://localhost:8500\(aq) +Ensure the ACL is absent +.INDENT 7.0 +.TP +.B name +Specifies a human\-friendly name for the ACL token. +.TP +.B id +Specifies the ID of the ACL. +.TP +.B token +token to authenticate you Consul query +.TP +.B consul_url +\fI\%http://locahost:8500\fP +consul URL to query +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +For more information \fI\%https://www.consul.io/api/acl.html#delete\-acl\-token\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.states.consul.acl_present(name, id=None, token=None, type=\(aqclient\(aq, rules=\(aq\(aq, consul_url=\(aqhttp://localhost:8500\(aq) +Ensure the ACL is present +.INDENT 7.0 +.TP +.B name +Specifies a human\-friendly name for the ACL token. +.TP +.B id +Specifies the ID of the ACL. +.TP +.B type: client +Specifies the type of ACL token. Valid values are: client and management. +.TP +.B rules +Specifies rules for this ACL token. +.TP +.B consul_url +\fI\%http://locahost:8500\fP +consul URL to query +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +For more information \fI\%https://www.consul.io/api/acl.html#create\-acl\-token\fP, \fI\%https://www.consul.io/api/acl.html#update\-acl\-token\fP +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.states.cron .SS Management of cron, the Unix command scheduler .sp @@ -394689,8 +395038,10 @@ is not set. .INDENT 0.0 .TP .B salt.states.cron.absent(name, user=\(aqroot\(aq, identifier=False, special=None, **kwargs) -Verifies that the specified cron job is absent for the specified user; only -the name is matched when removing a cron job. +Verifies that the specified cron job is absent for the specified user. +.sp +If an \fBidentifier\fP is not passed then the \fBname\fP is used to identify +the cron job for removal. .INDENT 7.0 .TP .B name @@ -401589,7 +401940,7 @@ New in version 2015.8.0. .B depends .INDENT 7.0 .IP \(bu 2 -python\-etcd +python\-etcd or etcd3\-py .UNINDENT .UNINDENT .sp @@ -401626,6 +401977,59 @@ etcd.port: 4001 .UNINDENT .UNINDENT .sp +In order to choose whether to use etcd API v2 or v3, you can put the following +configuration option in the same place as your etcd configuration. This option +defaults to true, meaning you will use v2 unless you specify otherwise. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.require_v2: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +When using API v3, there are some specific options available to be configured +within your etcd profile. They are defaulted to the following... +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +etcd.encode_keys: False +etcd.encode_values: True +etcd.raw_keys: False +etcd.raw_values: False +etcd.unicode_errors: "surrogateescape" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_keys\fP indicates whether you want to pre\-encode keys using msgpack before +adding them to etcd. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +If you set \fBetcd.encode_keys\fP to \fBTrue\fP, all recursive functionality will no longer work. +This includes \fBtree\fP and \fBls\fP and all other methods if you set \fBrecurse\fP/\fBrecursive\fP to \fBTrue\fP\&. +This is due to the fact that when encoding with msgpack, keys like \fB/salt\fP and \fB/salt/stack\fP will have +differing byte prefixes, and etcd v3 searches recursively using prefixes. +.UNINDENT +.UNINDENT +.sp +\fBetcd.encode_values\fP indicates whether you want to pre\-encode values using msgpack before +adding them to etcd. This defaults to \fBTrue\fP to avoid data loss on non\-string values wherever possible. +.sp +\fBetcd.raw_keys\fP determines whether you want the raw key or a string returned. +.sp +\fBetcd.raw_values\fP determines whether you want the raw value or a string returned. +.sp +\fBetcd.unicode_errors\fP determines what you policy to follow when there are encoding/decoding errors. +.sp \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 @@ -401641,6 +402045,7 @@ pillars. .sp Etcd profile configuration can be overridden using following arguments: \fBhost\fP, \fBport\fP, \fBusername\fP, \fBpassword\fP, \fBca\fP, \fBclient_key\fP and \fBclient_cert\fP\&. +The v3 specific arguments can also be used for overriding if you are using v3. .INDENT 0.0 .INDENT 3.5 .sp @@ -402584,6 +402989,9 @@ For example: Make sure that the named file or directory is absent. If it exists, it will be deleted. This will work to reverse any of the functions in the file state module. If a directory is supplied, it will be recursively deleted. +.sp +If only the contents of the directory need to be deleted but not the directory +itself, use \fI\%file.directory\fP with \fBclean=True\fP .INDENT 7.0 .TP .B name @@ -403097,9 +403505,12 @@ text 4 .UNINDENT .INDENT 0.0 .TP -.B salt.states.file.cached(name, source_hash=\(aq\(aq, source_hash_name=None, skip_verify=False, saltenv=\(aqbase\(aq) +.B salt.states.file.cached(name, source_hash=\(aq\(aq, source_hash_name=None, skip_verify=False, saltenv=\(aqbase\(aq, use_etag=False) New in version 2017.7.3. +.sp +Changed in version 3005. + .sp Ensures that a file is saved to the minion\(aqs cache. This state is primarily invoked by other states to ensure that we do not re\-download a source file @@ -403156,6 +403567,16 @@ state is run. .B saltenv Used to specify the environment from which to download a file from the Salt fileserver (i.e. those with \fBsalt://\fP URL). +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .sp This state will in most cases not be useful in SLS files, but it is useful @@ -403202,7 +403623,13 @@ if the file is not present in the minion cache. .UNINDENT .INDENT 0.0 .TP -.B salt.states.file.comment(name, regex, char=\(aq#\(aq, backup=\(aq.bak\(aq) +.B salt.states.file.comment(name, regex, char=\(aq#\(aq, backup=\(aq.bak\(aq, ignore_missing=False) +New in version 0.9.5. + +.sp +Changed in version 3005. + +.sp Comment out specified lines in a file. .INDENT 7.0 .TP @@ -403234,6 +403661,14 @@ after the first invocation. .UNINDENT .sp Set to False/None to not keep a backup. +.TP +.B ignore_missing +Ignore a failure to find the regex in the file. This is useful for +scenarios where a line must only be commented if it is found in the +file. +.sp +New in version 3005. + .UNINDENT .sp Usage: @@ -403249,9 +403684,6 @@ Usage: .fi .UNINDENT .UNINDENT -.sp -New in version 0.9.5. - .UNINDENT .INDENT 0.0 .TP @@ -403525,13 +403957,13 @@ directories will be created to facilitate the creation of the named file. .TP .B clean -Make sure that only files that are set up by salt and required by this -function are kept. If this option is set then everything in this -directory will be deleted unless it is required. -\(aqclean\(aq and \(aqmax_depth\(aq are mutually exclusive. +Remove any files that are not referenced by a required \fBfile\fP state. +See examples below for more info. If this option is set then everything +in this directory will be deleted unless it is required. \(aqclean\(aq and +\(aqmax_depth\(aq are mutually exclusive. .TP .B require -Require other resources such as packages or files +Require other resources such as packages or files. .TP .B exclude_pat When \(aqclean\(aq is set to True, exclude this pattern from removal list @@ -403660,6 +404092,168 @@ create_config_dir: .fi .UNINDENT .UNINDENT +.sp +For \fBclean: True\fP there is no mechanism that allows all states and +modules to enumerate the files that they manage, so for file.directory to +know what files are managed by Salt, a \fBfile\fP state targeting managed +files is required. To use a contrived example, the following states will +always have changes, despite the file named \fBokay\fP being created by a +Salt state: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +silly_way_of_creating_a_file: + cmd.run: + \- name: mkdir \-p /tmp/dont/do/this && echo "seriously" > /tmp/dont/do/this/okay + \- unless: grep seriously /tmp/dont/do/this/okay + +will_always_clean: + file.directory: + \- name: /tmp/dont/do/this + \- clean: True +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Because \fBcmd.run\fP has no way of communicating that it\(aqs creating a file, +\fBwill_always_clean\fP will remove the newly created file. Of course, every +time the states run the same thing will happen \- the +\fBsilly_way_of_creating_a_file\fP will crete the file and +\fBwill_always_clean\fP will always remove it. Over and over again, no matter +how many times you run it. +.sp +To make this example work correctly, we need to add a \fBfile\fP state that +targets the file, and a \fBrequire\fP between the file states. +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +silly_way_of_creating_a_file: + cmd.run: + \- name: mkdir \-p /tmp/dont/do/this && echo "seriously" > /tmp/dont/do/this/okay + \- unless: grep seriously /tmp/dont/do/this/okay + file.managed: + \- name: /tmp/dont/do/this/okay + \- create: False + \- replace: False + \- require_in: + \- file: will_always_clean +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Now there is a \fBfile\fP state that \fBclean\fP can check, so running those +states will work as expected. The file will be created with the specific +contents, and \fBclean\fP will ignore the file because it is being managed by +a salt \fBfile\fP state. Note that if \fBrequire_in\fP was placed under +\fBcmd.run\fP, it would \fBnot\fP work, because the requisite is for the cmd, +not the file. +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +silly_way_of_creating_a_file: + cmd.run: + \- name: mkdir \-p /tmp/dont/do/this && echo "seriously" > /tmp/dont/do/this/okay + \- unless: grep seriously /tmp/dont/do/this/okay + # This part should be under file.managed + \- require_in: + \- file: will_always_clean + file.managed: + \- name: /tmp/dont/do/this/okay + \- create: False + \- replace: False +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Any other state that creates a file as a result, for example \fBpkgrepo\fP, +must have the resulting files referenced in a file state in order for +\fBclean: True\fP to ignore them. Also note that the requisite +(\fBrequire_in\fP vs \fBrequire\fP) works in both directions: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +clean_dir: + file.directory: + \- name: /tmp/a/better/way + \- require: + \- file: a_better_way + +a_better_way: + file.managed: + \- name: /tmp/a/better/way/truely + \- makedirs: True + \- contents: a much better way +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Works the same as this: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +clean_dir: + file.directory: + \- name: /tmp/a/better/way + \- clean: True + +a_better_way: + file.managed: + \- name: /tmp/a/better/way/truely + \- makedirs: True + \- contents: a much better way + \- require_in: + \- file: clean_dir +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +A common mistake here is to forget the state name and id are both required for requisites: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +# Correct: +/path/to/some/file: + file.managed: + \- contents: Cool + \- require_in: + \- file: clean_dir + +# Incorrect +/path/to/some/file: + file.managed: + \- contents: Cool + \- require_in: + # should be \(ga\- file: clean_dir\(ga + \- clean_dir + +# Also incorrect +/path/to/some/file: + file.managed: + \- contents: Cool + \- require_in: + # should be \(ga\- file: clean_dir\(ga + \- file +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 0.0 .TP @@ -404269,7 +404863,7 @@ line present to be present in between \fBbefore\fP and \fBafter\fP\&. .UNINDENT .INDENT 0.0 .TP -.B salt.states.file.managed(name, source=None, source_hash=\(aq\(aq, source_hash_name=None, keep_source=True, user=None, group=None, mode=None, attrs=None, template=None, makedirs=False, dir_mode=None, context=None, replace=True, defaults=None, backup=\(aq\(aq, show_changes=True, create=True, contents=None, tmp_dir=\(aq\(aq, tmp_ext=\(aq\(aq, contents_pillar=None, contents_grains=None, contents_newline=True, contents_delimiter=\(aq:\(aq, encoding=None, encoding_errors=\(aqstrict\(aq, allow_empty=True, follow_symlinks=True, check_cmd=None, skip_verify=False, selinux=None, win_owner=None, win_perms=None, win_deny_perms=None, win_inheritance=True, win_perms_reset=False, verify_ssl=True, **kwargs) +.B salt.states.file.managed(name, source=None, source_hash=\(aq\(aq, source_hash_name=None, keep_source=True, user=None, group=None, mode=None, attrs=None, template=None, makedirs=False, dir_mode=None, context=None, replace=True, defaults=None, backup=\(aq\(aq, show_changes=True, create=True, contents=None, tmp_dir=\(aq\(aq, tmp_ext=\(aq\(aq, contents_pillar=None, contents_grains=None, contents_newline=True, contents_delimiter=\(aq:\(aq, encoding=None, encoding_errors=\(aqstrict\(aq, allow_empty=True, follow_symlinks=True, check_cmd=None, skip_verify=False, selinux=None, win_owner=None, win_perms=None, win_deny_perms=None, win_inheritance=True, win_perms_reset=False, verify_ssl=True, use_etag=False, **kwargs) Manage a given file, this function allows for a file to be downloaded from the salt master and potentially run through a templating system. .INDENT 7.0 @@ -405029,6 +405623,16 @@ will not attempt to validate the servers certificate. Default is True. .sp New in version 3002. +.TP +.B use_etag +If \fBTrue\fP, remote http/https file sources will attempt to use the +ETag header to determine if the remote file needs to be downloaded. +This provides a lightweight mechanism for promptly refreshing files +changed on a web server without requiring a full hash comparison via +the \fBsource_hash\fP parameter. +.sp +New in version 3005. + .UNINDENT .UNINDENT .INDENT 0.0 @@ -406413,13 +407017,20 @@ New in version 2017.7.7. .UNINDENT .INDENT 0.0 .TP -.B salt.states.file.tidied(name, age=0, matches=None, rmdirs=False, size=0, **kwargs) +.B salt.states.file.tidied(name, age=0, matches=None, rmdirs=False, size=0, exclude=None, full_path_match=False, followlinks=False, time_comparison=\(aqatime\(aq, **kwargs) +Changed in version 3005. + +.sp Remove unwanted files based on specific criteria. Multiple criteria are OR’d together, so a file that is too large but is not old enough will still get tidied. .sp If neither age nor size is given all files which match a pattern in matches will be removed. +.sp +NOTE: The regex patterns in this function are used in \fBre.match()\fP, so +there is an implicit "beginning of string" anchor (\fB^\fP) in the regex and +it is unanchored at the other end unless explicitly entered (\fB$\fP). .INDENT 7.0 .TP .B name @@ -406437,6 +407048,39 @@ Whether or not it\(aqs allowed to remove directories .B size Maximum allowed file size. Files greater or equal to this size are removed. Doesn\(aqt apply to directories or symbolic links +.TP +.B exclude +List of regular expressions to filter the \fBmatches\fP parameter and better +control what gets removed. +.sp +New in version 3005. + +.TP +.B full_path_match +Match the \fBmatches\fP and \fBexclude\fP regex patterns against the entire +file path instead of just the file or directory name. Default: \fBFalse\fP +.sp +New in version 3005. + +.TP +.B followlinks +This module will not descend into subdirectories which are pointed to by +symbolic links. If you wish to force it to do so, you may give this +option the value \fBTrue\fP\&. Default: \fBFalse\fP +.sp +New in version 3005. + +.TP +.B time_comparison +Default: \fBatime\fP\&. Options: \fBatime\fP/\fBmtime\fP/\fBctime\fP\&. This value +is used to set the type of time comparison made using \fBage\fP\&. The +default is to compare access times (atime) or the last time the file was +read. A comparison by modification time (mtime) uses the last time the +contents of the file was changed. The ctime parameter is the last time +the contents, owner, or permissions of the file were changed. +.sp +New in version 3005. + .UNINDENT .INDENT 7.0 .INDENT 3.5 @@ -412439,6 +413083,14 @@ accept_esp_forward_out: \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 +\fBname\fP is reserved for the Salt state name. To pass \fB\-\-name EXAMPLE\fP to +iptables, provide it with \fB\- name_: EXAMPLE\fP\&. +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 Various functions of the \fBiptables\fP module use the \fB\-\-check\fP option. If the version of \fBiptables\fP on the target system does not include this option, an alternate version of this check will be performed using the @@ -412453,6 +413105,8 @@ New in version 0.17.0. .sp Add a rule to the end of the specified chain. +If the rule is already present anywhere in the chain, its position is +not changed. .INDENT 7.0 .TP .B name @@ -412464,6 +413118,23 @@ The table that owns the chain which should be modified .TP .B family Network family, ipv4 or ipv6. +.TP +.B save +If set to a true value, the new iptables rules for the given family +will be saved to a file. +.sp +If the value is True, rules are saved to an OS\-dependent file +that will be loaded during system startup, resulting in the +firewall rule remaining active across reboots if possible. +.sp +Note that loading the iptables rules during system startup +may require non\-default packages to be installed. +On Debian\-derived systems, the iptables\-persistent +package is required. +.sp +If the value is a string, it is taken to be a filename to which +the rules will be saved. Arranging for the rules to be loaded +during system startup must be done separately. .UNINDENT .sp All other arguments are passed in with the same name as the long option @@ -412515,7 +413186,8 @@ Networking family, either ipv4 or ipv6 New in version 2014.1.0. .sp -Delete a rule to a chain +Delete a rule from a chain if present. If the rule is already absent, +this is not an error and nothing is changed. .INDENT 7.0 .TP .B name @@ -412527,6 +413199,10 @@ The table that owns the chain that should be modified .TP .B family Networking family, either ipv4 or ipv6 +.TP +.B save +If set to a true value, the new iptables rules for the given family +will be saved to a file. See the \fBappend\fP state for more details. .UNINDENT .sp All other arguments are passed in with the same name as the long option @@ -412562,7 +413238,8 @@ The chain to be flushed. All the chains in the table if none is given. New in version 2014.1.0. .sp -Insert a rule into a chain +Insert a rule into a chain. If the rule is already present anywhere +in the chain, its position is not changed. .INDENT 7.0 .TP .B name @@ -412578,6 +413255,10 @@ Networking family, either ipv4 or ipv6 .B position The numerical representation of where the rule should be inserted into the chain. Note that \fB\-1\fP is not a supported position value. +.TP +.B save +If set to a true value, the new iptables rules for the given family +will be saved to a file. See the \fBappend\fP state for more details. .UNINDENT .sp All other arguments are passed in with the same name as the long option @@ -412611,6 +413292,10 @@ Networking family, either ipv4 or ipv6 .TP .B policy The requested table policy +.TP +.B save +If set to a true value, the new iptables rules for the given family +will be saved to a file. See the \fBappend\fP state for more details. .UNINDENT .UNINDENT .SS salt.states.jboss7 @@ -414825,16 +415510,18 @@ State management of a java keystore Create or manage a java keystore. .INDENT 7.0 .TP -.B name -The path to the keystore file -.TP -.B passphrase -The password to the keystore -.TP -.B entries +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBname\fP \-\- The path to the keystore file +.IP \(bu 2 +\fBpassphrase\fP \-\- The password to the keystore +.IP \(bu 2 +\fBentries\fP \-\- +.sp A list containing an alias, certificate, and optional private_key. The certificate and private_key can be a file or a string -.INDENT 7.0 +.INDENT 2.0 .INDENT 3.5 .sp .nf @@ -414847,21 +415534,19 @@ The certificate and private_key can be a file or a string certificate: | \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- MIICEjCCAXsCAg36MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG - ... 2VguKv4SWjRFoRkIfIlHX0qVviMhSlNy2ioFLy7JcPZb+v3ftDGywUqcBiVDoea0 \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .ft P .fi .UNINDENT .UNINDENT -.TP -.B force_remove -If True will cause the state to remove any entries found in the keystore which are not -defined in the state. The default is False. -.UNINDENT + +.IP \(bu 2 +\fBforce_remove\fP \-\- .sp -Example -.INDENT 7.0 +If True will cause the state to remove any entries found in the keystore +which are not defined in the state. The default is False. Example: +.INDENT 2.0 .INDENT 3.5 .sp .nf @@ -414881,6 +415566,9 @@ define_keystore: certificate: {{ salt.pillar.get(\(aqpath:to:cert\(aq) }} .ft P .fi +.UNINDENT +.UNINDENT + .UNINDENT .UNINDENT .UNINDENT @@ -418964,10 +419652,8 @@ disable\-before\-deploy: \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 -There are two styles of calling \fBmodule.run\fP\&. \fBThe legacy style will no -longer be available starting in the 3005 release.\fP To opt\-in early to the -new style you must add the following to your \fB/etc/salt/minion\fP config -file: +As of the 3005 release, you no longer need to opt\-in to the new style of +calling \fBmodule.run\fP\&. The following config can be removed from \fB/etc/salt/minion\fP: .INDENT 0.0 .INDENT 3.5 .sp @@ -418979,6 +419665,8 @@ use_superseded: .fi .UNINDENT .UNINDENT +.sp +Both \(aqnew\(aq and \(aqlegacy\(aq styles of calling \fBmodule.run\fP are supported. .UNINDENT .UNINDENT .sp @@ -419376,6 +420064,53 @@ eventsviewer: .UNINDENT .INDENT 0.0 .TP +.B salt.states.module.mod_watch(**kwargs) +This function is an alias of \fBrun\fP\&. +.INDENT 7.0 +.INDENT 3.5 +Run a single module function or a range of module functions in a batch. +Supersedes \fBmodule.run\fP function, which requires \fBm_\fP prefix to +function\-specific parameters. +.INDENT 0.0 +.TP +.B param returner +Specify a common returner for the whole batch to send the return data +.TP +.B param kwargs +Pass any arguments needed to execute the function(s) +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +some_id_of_state: + module.run: + \- network.ip_addrs: + \- interface: eth0 + \- cloud.create: + \- names: + \- test\-isbm\-1 + \- test\-isbm\-2 + \- ssh_username: sles + \- image: sles12sp2 + \- securitygroup: default + \- size: \(aqc3.large\(aq + \- location: ap\-northeast\-1 + \- delvol_on_destroy: True +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B return +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP .B salt.states.module.run(**kwargs) Run a single module function or a range of module functions in a batch. Supersedes \fBmodule.run\fP function, which requires \fBm_\fP prefix to @@ -427929,9 +428664,8 @@ php.packages: \fBWARNING:\fP .INDENT 0.0 .INDENT 3.5 -Package names are currently case\-sensitive. If the minion is using a -package manager which is not case\-sensitive (such as \fBpkgng\fP), then this state will fail if the proper case is not -used. This will be addressed in a future release of Salt. +Make sure the package name has the correct case for package managers which are +case\-sensitive (such as \fBpkgng\fP). .UNINDENT .UNINDENT .INDENT 0.0 @@ -428125,6 +428859,69 @@ call to \fBpkg.install\fP\&. .UNINDENT .INDENT 0.0 .TP +.B salt.states.pkg.held(name, version=None, pkgs=None, replace=False, **kwargs) +New in version 3005. + +.sp +Set package in \(aqhold\(aq state, meaning it will not be changed. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBname\fP (\fI\%str\fP) \-\- The name of the package to be held. This parameter is ignored +if \fBpkgs\fP is used. +.IP \(bu 2 +\fBversion\fP (\fI\%str\fP) \-\- +.sp +Hold a specific version of a package. +Full description of this parameter is in \fIinstalled\fP function. +.sp +\fBNOTE:\fP +.INDENT 2.0 +.INDENT 3.5 +This parameter make sense for Zypper\-based systems. +Ignored for YUM/DNF and APT +.UNINDENT +.UNINDENT + +.IP \(bu 2 +\fBpkgs\fP (\fI\%list\fP) \-\- +.sp +A list of packages to be held. All packages listed under \fBpkgs\fP +will be held. +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +mypkgs: + pkg.held: + \- pkgs: + \- foo + \- bar: 1.2.3\-4 + \- baz +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 2.0 +.INDENT 3.5 +For Zypper\-based systems the package could be held for +the version specified. YUM/DNF and APT ingore it. +.UNINDENT +.UNINDENT + +.IP \(bu 2 +\fBreplace\fP (\fI\%bool\fP) \-\- Force replacement of existings holds with specified. +By default, this parameter is set to \fBFalse\fP\&. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP .B salt.states.pkg.installed(name, version=None, refresh=None, fromrepo=None, skip_verify=False, skip_suggestions=False, pkgs=None, sources=None, allow_updates=False, pkg_verify=False, normalize=True, ignore_epoch=None, reinstall=False, update_holds=False, **kwargs) Ensure that the package is installed, and that it is the correct version (if specified). @@ -428624,7 +429421,7 @@ epochs unless this argument was set to \fBTrue\fP\&. .fi .sp .sp -\fBMULTIPLE PACKAGE INSTALLATION OPTIONS: (not supported in pkgng)\fP +\fBMULTIPLE PACKAGE INSTALLATION OPTIONS:\fP .INDENT 7.0 .TP .B Parameters @@ -429545,6 +430342,71 @@ version numbers as well. .sp New in version 0.16.0. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B salt.states.pkg.unheld(name, version=None, pkgs=None, all=False, **kwargs) +New in version 3005. + +.sp +Unset package from \(aqhold\(aq state, to allow operations with the package. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBname\fP (\fI\%str\fP) \-\- The name of the package to be unheld. This parameter is ignored +if \fBpkgs\fP is used. +.IP \(bu 2 +\fBversion\fP (\fI\%str\fP) \-\- +.sp +Unhold a specific version of a package. +Full description of this parameter is in \fIinstalled\fP function. +.sp +\fBNOTE:\fP +.INDENT 2.0 +.INDENT 3.5 +This parameter make sense for Zypper\-based systems. +Ignored for YUM/DNF and APT +.UNINDENT +.UNINDENT + +.IP \(bu 2 +\fBpkgs\fP (\fI\%list\fP) \-\- +.sp +A list of packages to be unheld. All packages listed under \fBpkgs\fP +will be unheld. +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +mypkgs: + pkg.unheld: + \- pkgs: + \- foo + \- bar: 1.2.3\-4 + \- baz +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 2.0 +.INDENT 3.5 +For Zypper\-based systems the package could be held for +the version specified. YUM/DNF and APT ingore it. +For \fBunheld\fP there is no need to specify the exact version +to be unheld. +.UNINDENT +.UNINDENT + +.IP \(bu 2 +\fBall\fP (\fI\%bool\fP) \-\- Force removing of all existings locks. +By default, this parameter is set to \fBFalse\fP\&. +.UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 @@ -430043,6 +430905,49 @@ hello\-copr: .fi .UNINDENT .UNINDENT +.SS apt\-key deprecated +.sp +\fBapt\-key\fP is deprecated and will be last available in Debian 11 and +Ubuntu 22.04. The recommended way to manage repo keys going forward +is to download the keys into /etc/apt/keyrings and use \fBsigned\-by\fP +in your repo file pointing to the key. This module was updated +in version 3005 to implement the recommended approach. You need to add +\fB\- aptkey: False\fP to your state and set \fBsigned\-by\fP in your repo +name, to use this recommended approach. If the cli command \fBapt\-key\fP +is not available it will automatically set \fBaptkey\fP to False. +.sp +Using \fBaptkey: False\fP with \fBkey_url\fP example: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +deb [signed\-by=/etc/apt/keyrings/salt\-archive\-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/18.04/amd64/latest bionic main: + pkgrepo.managed: + \- file: /etc/apt/sources.list.d/salt.list + \- key_url: https://repo.saltproject.io/py3/ubuntu/18.04/amd64/latest/salt\-archive\-keyring.gpg + \- aptkey: False +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Using \fBaptkey: False\fP with \fBkeyserver\fP and \fBkeyid\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +deb [signed\-by=/etc/apt/keyrings/salt\-archive\-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/18.04/amd64/latest bionic main: + pkgrepo.managed: + \- file: /etc/apt/sources.list.d/salt.list + \- keyserver: keyserver.ubuntu.com + \- keyid: 0E08A149DE57BFBE + \- aptkey: False +.ft P +.fi +.UNINDENT +.UNINDENT .INDENT 0.0 .TP .B salt.states.pkgrepo.absent(name, **kwargs) @@ -430137,7 +431042,7 @@ present. .UNINDENT .INDENT 0.0 .TP -.B salt.states.pkgrepo.managed(name, ppa=None, copr=None, **kwargs) +.B salt.states.pkgrepo.managed(name, ppa=None, copr=None, aptkey=True, **kwargs) This state manages software package repositories. Currently, \fByum\fP, \fBapt\fP, and \fBzypper\fP repositories are supported. .sp \fBYUM/DNF/ZYPPER\-BASED SYSTEMS\fP @@ -430398,6 +431303,10 @@ Set this to a list of \fBpkg.installed\fP or \fBpkg.latest\fP to trigger the running of \fBapt\-get update\fP prior to attempting to install these packages. Setting a require in the pkg state will not work for this. +.TP +.B aptkey: Use the binary apt\-key. If the command \fBapt\-key\fP is not found +in the path, aptkey will be False, regardless of what is passed into +this argument. .UNINDENT .UNINDENT .SS salt.states.portage_config @@ -432617,10 +433526,10 @@ Ensure the RabbitMQ user exists. User name .TP .B password -User\(aqs password, if one needs to be set +The user\(aqs password .TP .B force -If user exists, forcibly change the password +If force is \fBTrue\fP, the password will be automatically updated without extra password change check. .TP .B tags Optional list of tags for the user @@ -433671,6 +434580,73 @@ set_key_permissions: .UNINDENT .UNINDENT .UNINDENT +.SS salt.states.restconf +.sp +RESTCONF +State module for Proxy minions +.INDENT 0.0 +.TP +.B codeauthor +Jamie (Bear) Murphy <\fI\%jamiemurphyit@gmail.com\fP> +.TP +.B maturity +new +.TP +.B platform +any +.UNINDENT +.SS About +.sp +This state module was designed to manage RESTCONF states. +This module relies on the RESTCONF proxy module to interface with the devices. +.INDENT 0.0 +.TP +.B salt.states.restconf.config_manage(name, path, method, config, init_path=None, init_method=\(aqPATCH\(aq, init_config=None) +Ensure a specific value exists at a given path +.INDENT 7.0 +.TP +.B name: +(str) The name for this rule +.TP +.B path: +(str) The RESTCONF path to set / get config +.TP +.B method: +(str) rest method to use eg GET, PUT, POST, PATCH, DELETE +.TP +.B config: +(dict) The new value at the given path +.TP +.B init_path: (optional) +(str) Alternative path incase the path doesnt exist on first pass +.TP +.B init_method: (optional) +(str) Method to use on alternative path when setting config, default: PATCH +.TP +.B init_config: (optional) +(dict) The new value at the given init path. +This is only needed if you need to supply a different style of data to an init path. +.UNINDENT +.sp +Examples: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +do_configure_restconf_endpoint: + restconf.config_manage: + \- name: random_name_here + \- path: restconf/data/Cisco\-IOS\-XE\-native:native/interface/GigabitEthernet=1%2F0%2F3 + \- config: + Cisco\-IOS\-XE\-native:GigabitEthernet: + description: interfaceDescription + name: "1/0/3" +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.states.rsync .sp State to synchronize files and directories with rsync. @@ -434026,6 +435002,12 @@ based on the returned data dict for individual minions .TP .B ssh Set to \fITrue\fP to use the ssh client instead of the standard salt client +.TP +.B roster +In the event of using salt\-ssh, a roster system can be set +.sp +New in version 3005. + .TP .B batch Execute the command in batches\&. E.g.: \fB10%\fP\&. @@ -434854,7 +435836,11 @@ Ensure a job is absent from the schedule The unique name that is given to the scheduled job. .TP .B persist -Whether the job should persist between minion restarts, defaults to True. +Whether changes to the scheduled job should be saved, defaults to True. +.sp +When used with absent this will decide whether the scheduled job will be removed +from the saved scheduled jobs and not be available when the Salt minion is +restarted. .UNINDENT .UNINDENT .INDENT 0.0 @@ -434867,7 +435853,7 @@ Ensure a job is disabled in the schedule The unique name that is given to the scheduled job. .TP .B persist -Whether the job should persist between minion restarts, defaults to True. +Whether changes to the scheduled job should be saved, defaults to True. .UNINDENT .UNINDENT .INDENT 0.0 @@ -434880,7 +435866,7 @@ Ensure a job is enabled in the schedule The unique name that is given to the scheduled job. .TP .B persist -Whether the job should persist between minion restarts, defaults to True. +Whether changes to the scheduled job should be saved, defaults to True. .UNINDENT .UNINDENT .INDENT 0.0 @@ -434920,7 +435906,7 @@ using the crontab format. Requires python\-croniter. .TP .B run_on_start -Whether the job will run when Salt minion starts, or the job will be +Whether the scheduled job will run when Salt minion starts, or the job will be skipped \fBonce\fP and run at the next scheduled run. Value should be a boolean. .TP @@ -434957,7 +435943,7 @@ The default date format is ISO 8601 but can be overridden by also specifying the \fBonce_fmt\fP option. .TP .B enabled -Whether the job should be enabled or disabled. Value should be a boolean. +Whether the scheduled job should be enabled or disabled. Value should be a boolean. .TP .B return_job Whether to return information to the Salt master upon job completion. @@ -434980,7 +435966,7 @@ Any individual returner configuration items to override. Should be passed as a dictionary. .TP .B persist -Whether the job should persist between minion restarts, defaults to True. +Whether changes to the scheduled job should be saved, defaults to True. .TP .B skip_during_range This will ensure that the scheduled command does not run within the @@ -434988,7 +435974,7 @@ range specified. The range parameter must be a dictionary with the date strings using the dateutil format. Requires python\-dateutil. .TP .B run_after_skip_range -Whether the job should run immediately after the skip_during_range time +Whether the scheduled job should run immediately after the skip_during_range time period ends. .UNINDENT .UNINDENT @@ -436965,8 +437951,8 @@ The SSH key to manage The user who owns the SSH authorized keys file to modify .TP .B enc -Defines what type of key is being used; can be ed25519, ecdsa, ssh\-rsa -or ssh\-dss +Defines what type of key is being used, can be ed25519, ecdsa, +ssh\-rsa, ssh\-dss or any other type as of openssh server version 8.7. .TP .B comment The comment to be placed with the SSH public key @@ -437011,8 +437997,8 @@ The SSH key to manage The user who owns the SSH authorized keys file to modify .TP .B enc -Defines what type of key is being used; can be ed25519, ecdsa, ssh\-rsa -or ssh\-dss +Defines what type of key is being used, can be ed25519, ecdsa, +ssh\-rsa, ssh\-dss or any other type as of openssh server version 8.7. .TP .B comment The comment to be placed with the SSH public key @@ -437070,8 +438056,8 @@ The SSH key to manage The user who owns the SSH authorized keys file to modify .TP .B enc -Defines what type of key is being used; can be ed25519, ecdsa, ssh\-rsa -or ssh\-dss +Defines what type of key is being used, can be ed25519, ecdsa, +ssh\-rsa, ssh\-dss or any other type as of openssh server version 8.7. .TP .B comment The comment to be placed with the SSH public key @@ -437194,8 +438180,8 @@ optional parameter, port which will be used to when requesting the public key from the remote host, defaults to port 22. .TP .B enc -Defines what type of key is being used, can be ed25519, ecdsa ssh\-rsa -or ssh\-dss +Defines what type of key is being used, can be ed25519, ecdsa, +ssh\-rsa, ssh\-dss or any other type as of openssh server version 8.7. .TP .B config The location of the authorized keys file relative to the user\(aqs home @@ -437716,7 +438702,10 @@ named configuration file. The default sysctl configuration file is The name of the sysctl value to edit .TP .B value -The sysctl value to apply +The sysctl value to apply. Make sure to set the value to the correct expected +output for systctl or reading the respective /proc/sys file. For example, instead +of adding the value \fI1,2,3\fP you might need to write \fI1\-3\fP\&. If you do not set +the correct value, Salt will continue to return with changes. .TP .B config The location of the sysctl configuration file. If not specified, the @@ -440400,7 +441389,7 @@ New in version 3003. .IP \(bu 2 \fBaddresses\fP \-\- .sp -whitespace separated list of addreses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. +whitespace separated list of addresses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. (default \fBNone\fP) .INDENT 2.0 .INDENT 3.5 @@ -440731,7 +441720,7 @@ New in version 3003. .IP \(bu 2 \fBaddresses\fP \-\- .sp -whitespace separated list of addreses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. +whitespace separated list of addresses of PCI devices that can be used for this network in \fIhostdev\fP forward mode. (default \fBNone\fP) .INDENT 2.0 .INDENT 3.5 @@ -442058,37 +443047,81 @@ salt://certs/cert.cer: .INDENT 0.0 .TP .B salt.states.win_certutil.add_store(name, store, saltenv=\(aqbase\(aq) -Store a certificate to the given store +Store a certificate to the given certificate store .INDENT 7.0 .TP -.B name -The certificate to store, this can use local paths -or salt:// paths +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBname\fP (\fI\%str\fP) \-\- The path to the certificate to add to the store. This is either the +path to a local file or a file from the file server in the form of +\fBsalt://path/to/file\fP +.IP \(bu 2 +\fBstore\fP (\fI\%str\fP) \-\- The certificate store to add the certificate to +.IP \(bu 2 +\fBsaltenv\fP (\fI\%str\fP) \-\- The salt environment to use. This is ignored if the path is local +.UNINDENT .TP -.B store -The store to add the certificate to +.B Returns +A dictionary containing the results .TP -.B saltenv -The salt environment to use, this is ignored if a local -path is specified +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +add_certificate: + certutil.add_store: + name: salt://web_cert.cer + store: TrustedPublisher +.ft P +.fi +.UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B salt.states.win_certutil.del_store(name, store, saltenv=\(aqbase\(aq) -Remove a certificate in the given store +Remove a certificate from the given certificate store .INDENT 7.0 .TP -.B name -The certificate to remove, this can use local paths -or salt:// paths +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBname\fP (\fI\%str\fP) \-\- The path to the certificate to remove from the store. This is either +the path to a local file or a file from the file server in the form +of \fBsalt://path/to/file\fP +.IP \(bu 2 +\fBstore\fP (\fI\%str\fP) \-\- The certificate store to remove the certificate from +.IP \(bu 2 +\fBsaltenv\fP (\fI\%str\fP) \-\- The salt environment to use. This is ignored if the path is local +.UNINDENT .TP -.B store -The store to remove the certificate from +.B Returns +A dictionary containing the results .TP -.B saltenv -The salt environment to use, this is ignored if a local -path is specified +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +CLI Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +remove_certificate: + certutil.del_store: + name: salt://web_cert.cer + store: TrustedPublisher +.ft P +.fi +.UNINDENT .UNINDENT .UNINDENT .SS salt.states.win_dacl @@ -444470,6 +445503,168 @@ uninstall_multiple_features: .UNINDENT .UNINDENT .UNINDENT +.SS salt.states.win_shortcut +.sp +State module for creating shortcuts on Windows. Handles file shortcuts (\fI\&.lnk\fP) +and url shortcuts (\fI\&.url\fP). Allows for the configuration of icons and hot keys +on file shortcuts. Changing the icon and hot keys are unsupported for url +shortcuts. +.sp +New in version 3005. + +.INDENT 0.0 +.TP +.B salt.states.win_shortcut.present(name, arguments=\(aq\(aq, description=\(aq\(aq, hot_key=\(aq\(aq, icon_location=\(aq\(aq, icon_index=0, target=\(aq\(aq, window_style=\(aqNormal\(aq, working_dir=\(aq\(aq, backup=False, force=False, make_dirs=False, user=None) +Create a new shortcut. This can be a file shortcut (\fB\&.lnk\fP) or a url +shortcut (\fB\&.url\fP). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBname\fP (\fI\%str\fP) \-\- The full path to the shortcut +.IP \(bu 2 +\fBtarget\fP (\fI\%str\fP) \-\- The full path to the target +.IP \(bu 2 +\fBarguments\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- Any arguments to be passed to the target +.IP \(bu 2 +\fBdescription\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The description for the shortcut. This is +shown in the \fBComment\fP field of the dialog box. Default is an +empty string +.IP \(bu 2 +\fBhot_key\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- +.sp +A combination of hot Keys to trigger this +shortcut. This is something like \fBCtrl+Alt+D\fP\&. This is shown in +the \fBShortcut key\fP field in the dialog box. Default is an empty +string. Available options are: +.INDENT 2.0 +.IP \(bu 2 +Ctrl +.IP \(bu 2 +Alt +.IP \(bu 2 +Shift +.IP \(bu 2 +Ext +.UNINDENT + +.IP \(bu 2 +\fBicon_index\fP (\fI\%int\fP\fI, \fP\fIoptional\fP) \-\- The index for the icon to use in files that +contain multiple icons. Default is 0 +.IP \(bu 2 +\fBicon_location\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The full path to a file containing icons. +This is shown in the \fBChange Icon\fP dialog box by clicking the +\fBChange Icon\fP button. If no file is specified and a binary is +passed as the target, Windows will attempt to get the icon from the +binary file. Default is an empty string +.IP \(bu 2 +\fBwindow_style\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- +.sp +The window style the program should start +in. This is shown in the \fBRun\fP field of the dialog box. Default is +\fBNormal\fP\&. Valid options are: +.INDENT 2.0 +.IP \(bu 2 +Normal +.IP \(bu 2 +Minimized +.IP \(bu 2 +Maximized +.UNINDENT + +.IP \(bu 2 +\fBworking_dir\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The full path to the working directory for +the program to run in. This is shown in the \fBStart in\fP field of +the dialog box. +.IP \(bu 2 +\fBbackup\fP (\fI\%bool\fP\fI, \fP\fIoptional\fP) \-\- If there is already a shortcut with the same +name, set this value to \fBTrue\fP to backup the existing shortcut and +continue creating the new shortcut. Default is \fBFalse\fP +.IP \(bu 2 +\fBforce\fP (\fI\%bool\fP\fI, \fP\fIoptional\fP) \-\- If there is already a shortcut with the same +name and you aren\(aqt backing up the shortcut, set this value to +\fBTrue\fP to remove the existing shortcut and create a new with these +settings. Default is \fBFalse\fP +.IP \(bu 2 +\fBmake_dirs\fP (\fI\%bool\fP\fI, \fP\fIoptional\fP) \-\- If the parent directory structure does not +exist for the new shortcut, create it. Default is \fBFalse\fP +.IP \(bu 2 +\fBuser\fP (\fI\%str\fP\fI, \fP\fIoptional\fP) \-\- The user to be the owner of any directories +created by setting \fBmake_dirs\fP to \fBTrue\fP\&. If no value is passed +Salt will use the user account that it is running under. Default is +an empty string. +.UNINDENT +.TP +.B Returns +.INDENT 7.0 +.TP +.B A dictionary containing the changes, comments, and result of the +state +.UNINDENT + +.TP +.B Return type +\fI\%dict\fP +.UNINDENT +.sp +Example: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +KB123456: + wusa.installed: + \- source: salt://kb123456.msu + +# Create a shortcut and set the \(ga\(gaShortcut key\(ga\(ga (\(ga\(gahot_key\(ga\(ga) +new_shortcut: + shortcut.present: + \- name: C:\epath\eto\eshortcut.lnk + \- target: C:\eWindows\enotepad.exe + \- hot_key: Ctrl+Alt+N + +# Create a shortcut and change the icon to the 3rd one in the icon file +new_shortcut: + shortcut.present: + \- name: C:\epath\eto\eshortcut.lnk + \- target: C:\eWindows\enotepad.exe + \- icon_location: C:\epath\eto\eicon.ico + \- icon_index: 2 + +# Create a shortcut and change the startup mode to full screen +new_shortcut: + shortcut.present: + \- name: C:\epath\eto\eshortcut.lnk + \- target: C:\eWindows\enotepad.exe + \- window_style: Maximized + +# Create a shortcut and change the icon +new_shortcut: + shortcut.present: + \- name: C:\epath\eto\eshortcut.lnk + \- target: C:\eWindows\enotepad.exe + \- icon_location: C:\epath\eto\eicon.ico + +# Create a shortcut and force it to overwrite an existing shortcut +new_shortcut: + shortcut.present: + \- name: C:\epath\eto\eshortcut.lnk + \- target: C:\eWindows\enotepad.exe + \- force: True + +# Create a shortcut and create any parent directories if they are missing +new_shortcut: + shortcut.present: + \- name: C:\epath\eto\eshortcut.lnk + \- target: C:\eWindows\enotepad.exe + \- make_dirs: True +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT .SS salt.states.win_smtp_server .sp Module for managing IIS SMTP server configuration on Windows servers. @@ -445163,7 +446358,15 @@ more than one update being installed. .INDENT 7.0 .TP .B Returns -A dictionary containing the results of the update +.INDENT 7.0 +.TP +.B A dictionary containing the results of the update. There are three +keys under changes. \fIinstalled\fP is a list of updates that were +successfully installed. \fIfailed\fP is a list of updates that failed +to install. \fIsuperseded\fP is a list of updates that were not +installed because they were superseded by another update. +.UNINDENT + .TP .B Return type \fI\%dict\fP @@ -445236,7 +446439,14 @@ more than one update being removed. .INDENT 7.0 .TP .B Returns -A dictionary containing the results of the removal +.INDENT 7.0 +.TP +.B A dictionary containing the results of the removal. There are +three keys under changes. \fIremoved\fP is a list of updates that +were successfully removed. \fIfailed\fP is a list of updates that +failed to be removed. +.UNINDENT + .TP .B Return type \fI\%dict\fP @@ -445352,7 +446562,15 @@ Important .UNINDENT .TP .B Returns -A dictionary containing the results of the update +.INDENT 7.0 +.TP +.B A dictionary containing the results of the update. There are three +keys under changes. \fIinstalled\fP is a list of updates that were +successfully installed. \fIfailed\fP is a list of updates that failed +to install. \fIsuperseded\fP is a list of updates that were not +installed because they were superseded by another update. +.UNINDENT + .TP .B Return type \fI\%dict\fP @@ -447263,7 +448481,7 @@ installed2 .UNINDENT .INDENT 0.0 .TP -.B salt.states.zcbuildout.installed(name, config=\(aqbuildout.cfg\(aq, quiet=False, parts=None, user=None, env=(), buildout_ver=None, test_release=False, distribute=None, new_st=None, offline=False, newest=False, python=\(aq/home/dscripter/git/saltopen/salt/.nox/docs\-man\-compress\-false\-update\-true\-clean\-true/bin/python\(aq, debug=False, verbose=False, unless=None, onlyif=None, use_vt=False, loglevel=\(aqdebug\(aq, **kwargs) +.B salt.states.zcbuildout.installed(name, config=\(aqbuildout.cfg\(aq, quiet=False, parts=None, user=None, env=(), buildout_ver=None, test_release=False, distribute=None, new_st=None, offline=False, newest=False, python=\(aq/__w/salt/salt/.nox/docs\-man\-compress\-false\-update\-true\-clean\-true/bin/python\(aq, debug=False, verbose=False, unless=None, onlyif=None, use_vt=False, loglevel=\(aqdebug\(aq, **kwargs) Install buildout in a specific directory .sp It is a thin wrapper to modules.buildout.buildout @@ -451487,7 +452705,7 @@ __salt__[\(aqtest.ping\(aq]() .UNINDENT .INDENT 0.0 .TP -.B salt.loader.raw_mod(opts, name, functions, mod=\(aqmodules\(aq) +.B salt.loader.raw_mod(opts, name, functions, mod=\(aqmodules\(aq, loaded_base_name=None) Returns a single module loaded raw and bypassing the __virtual__ function .INDENT 7.0 .INDENT 3.5 @@ -451507,7 +452725,7 @@ testmod[\(aqtest.ping\(aq]() .UNINDENT .INDENT 0.0 .TP -.B salt.loader.states(opts, functions, utils, serializers, whitelist=None, proxy=None, context=None) +.B salt.loader.states(opts, functions, utils, serializers, whitelist=None, proxy=None, context=None, loaded_base_name=None) Returns the state modules .INDENT 7.0 .TP @@ -451537,7 +452755,7 @@ statemods = salt.loader.states(__opts__, None, None) .UNINDENT .INDENT 0.0 .TP -.B salt.loader.grains(opts, force_refresh=False, proxy=None, context=None) +.B salt.loader.grains(opts, force_refresh=False, proxy=None, context=None, loaded_base_name=None) Return the functions for the dynamic grains and the values for the static grains. .sp @@ -451563,7 +452781,7 @@ print __grains__[\(aqid\(aq] .UNINDENT .INDENT 0.0 .TP -.B salt.loader.grain_funcs(opts, proxy=None, context=None) +.B salt.loader.grain_funcs(opts, proxy=None, context=None, loaded_base_name=None) Returns the grain functions .INDENT 7.0 .INDENT 3.5 @@ -452142,6 +453360,36 @@ to watch for the return .TP .B cmd(fun, arg=None, pub_data=None, kwarg=None, print_event=True, full_return=False) Execute a function +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +>>> opts = salt.config.master_config(\(aq/etc/salt/master\(aq) +>>> runner = salt.runner.RunnerClient(opts) +>>> runner.cmd(\(aqjobs.list_jobs\(aq, []) +{ + \(aq20131219215650131543\(aq: { + \(aqArguments\(aq: [300], + \(aqFunction\(aq: \(aqtest.sleep\(aq, + \(aqStartTime\(aq: \(aq2013, Dec 19 21:56:50.131543\(aq, + \(aqTarget\(aq: \(aq*\(aq, + \(aqTarget\-type\(aq: \(aqglob\(aq, + \(aqUser\(aq: \(aqsaltdev\(aq + }, + \(aq20131219215921857715\(aq: { + \(aqArguments\(aq: [300], + \(aqFunction\(aq: \(aqtest.sleep\(aq, + \(aqStartTime\(aq: \(aq2013, Dec 19 21:59:21.857715\(aq, + \(aqTarget\(aq: \(aq*\(aq, + \(aqTarget\-type\(aq: \(aqglob\(aq, + \(aqUser\(aq: \(aqsaltdev\(aq + }, +} +.ft P +.fi +.UNINDENT +.UNINDENT .UNINDENT .INDENT 7.0 .TP @@ -452193,7 +453441,7 @@ runner.eauth_sync({ .SS WheelClient .INDENT 0.0 .TP -.B class salt.wheel.WheelClient(opts=None) +.B class salt.wheel.WheelClient(opts, context=None) An interface to Salt\(aqs wheel modules .sp Wheel modules interact with various parts of the @@ -454064,9 +455312,9 @@ install the software. Available parameters are: .IP \(bu 2 \fBallusers\fP : If this is an MSI, install to all users .IP \(bu 2 -\fBcache_dir\fP : Cache the entire directory in the installer URL (\fBsalt://\fP) +\fBcache_dir\fP : Cache the entire directory in the installer URL if it starts with \fBsalt://\fP .IP \(bu 2 -\fBcache_file\fP : Cache a single file in the installer URL (\fBsalt://\fP) +\fBcache_file\fP : Cache a single file in the installer URL if it starts with \fBsalt://\fP .IP \(bu 2 \fBuse_scheduler\fP : Launch the installer using the task scheduler .IP \(bu 2 @@ -455420,11 +456668,14 @@ the received message. 4) The new minion thread is created. The _thread_return() function starts up and actually calls out to the requested function contained in the job. 5) The requested function runs and returns a result. [Still in thread.] -6) The result of the function that\(aqs run is encrypted and returned to the -master\(aqs ReqServer (TCP 4506 on master). [Still in thread.] +6) The result of the function that\(aqs run is published on the minion\(aqs local event bus with event +tag "__master_req_channel_payload" [Still in thread.] 7) Thread exits. Because the main thread was only blocked for the time that it took to initialize the worker thread, many other requests could have been received and processed during this time. +8) Minion event handler gets the event with tag "__master_req_channel_payload" +and sends the payload to master\(aqs ReqServer (TCP 4506 on master), via the long\-running async request channel +that was opened when minion first started up. .SS A Note on ClearFuncs vs. AESFuncs .sp A common source of confusion is determining when messages are passed in the @@ -455512,7 +456763,7 @@ towncrier \-\-draft \-\-version=3001 .sp .nf .ft C -nox \-e \(aqchangelog(draft=True)\(aq \-\- 3000.1 +nox \-e \(aqchangelog(force=False, draft=True)\(aq \-\- 3000.1 .ft P .fi .UNINDENT @@ -455535,13 +456786,26 @@ towncrier \-\-version=3001 .sp .nf .ft C -nox \-e \(aqchangelog(draft=False)\(aq \-\- 3000.1 +nox \-e \(aqchangelog(force=False, draft=False)\(aq \-\- 3000.1 .ft P .fi .UNINDENT .UNINDENT .sp After this is run towncrier will automatically remove all the files in the changelog directory. +.sp +If you want to force towncrier to automatically remove all the files in the changelog directory +without asking you to type yes, you can set force to True. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +nox \-e \(aqchangelog(force=True, draft=False)\(aq \-\- 3000.1 +.ft P +.fi +.UNINDENT +.UNINDENT .SS Contributing .sp So you want to contribute to the Salt project? Excellent! You can help @@ -456668,7 +457932,9 @@ For other platforms, the package will likely be similarly named. Installing dependencies on macOS. .sp You can install needed dependencies on macOS using homebrew or macports. -See macOS Installation +See the +\fI\%Salt install guide\fP +for more information. .UNINDENT .UNINDENT .sp @@ -456842,7 +458108,9 @@ ulimit \-n 2047 .UNINDENT .UNINDENT .sp -To set file descriptors on macOS, refer to the macOS Installation instructions. +To set file descriptors on macOS, see the +\fI\%Salt install guide\fP +instructions for macOS. .UNINDENT .UNINDENT .SS Changing Default Paths @@ -462757,9 +464025,9 @@ it is ready. We will add you to the Contributors team on the Ping a SaltStack employee on IRC (\fI\%#salt\fP on LiberaChat), join the \fB#formulas\fP channel on the \fI\%salt\-slack\fP (bridged to \fB#saltstack\-formulas\fP on LiberaChat) or send an email to the \fI\%salt\-users\fP mailing list. Note that -IRC logs are available at \fI\%https://freenode.logbot.info/salt\fP, -\fI\%https://freenode.logbot.info/saltstack\-formulas\fP, and -\fI\%http://ngxbot.nginx.org/logs/%23salt/\fP\&. +IRC logs are available at \fI\%http://ngxbot.nginx.org/logs/%23salt/\fP and archives +for FreeNode (up to mid\-June 2021) \fI\%https://logbot\-archive.s3.amazonaws.com/freenode/salt.gz\fP +and \fI\%https://logbot\-archive.s3.amazonaws.com/freenode/saltstack\-formulas.gz\fP\&. .sp There are a lot of repositories in that organization! Team members can manage which repositories they are subscribed to on GitHub\(aqs watching page: @@ -465559,6 +466827,411 @@ information about the version numbering scheme. .sp Release Candidate .SS Previous Releases +.SS Salt 3004 Release Notes \- Codename Silicon +.SS New Features +.SS Transactional System Support (MicroOS) +.sp +A transactional system, like \fBMicroOS\fP, can present some challenges +when the user decided to manage it via Salt. +.sp +MicroOS provide a read\-only rootfs and a tool, +\fBtransactional\-update\fP, that takes care of the management of the +system (updating, upgrading, installation or reboot, among others) in +an atomic way. +.sp +Atomicity is the main feature of MicroOS, and to guarantee this +property, this model leverages \fBsnapper\fP, \fBzypper\fP, \fBbtrfs\fP and +\fBoverlayfs\fP to create snapshots that will be updated independently +of the currently running system, and that are activated after the +reboot. This implies, for example, that some changes made on the +system are not visible until the next reboot, as those changes are +living in a different snapshot of the file system. +.sp +Salt 3004 (Silicon) support this type of system via two new modules +(\fBtransactional_update\fP and \fBrebootmgr\fP) and a new executor +(\fBtransactional_update\fP). +.sp +The new modules will provide all the low level API for interacting +with transactional systems, like defining a mantenance window where +the system is free to reboot and activate the new state, or install +new software in a new transaction. It will also provide hight level +of abstractions that will allows us to execute Salt module functions +or applying states inside new transactions. +.sp +The execution module will help us to treat the transactional system +transparently (like the traditional ones), using a mechanism that will +delegate some Salt modules execution into the new +\fBtransactional_update\fP module. +.SS Removed +.INDENT 0.0 +.IP \(bu 2 +Removed the deprecated glance state and execution module in favor of the glance_image +state module and the glanceng execution module. (#59079) +.IP \(bu 2 +Removed support for Ubuntu 16.04 (#59869) +.IP \(bu 2 +Removed the deprecated support for \fBgid_from_name\fP from the \fBuser\fP state module (#60565) +.IP \(bu 2 +Removed deprecated virt.migrate_non_shared, virt.migrate_non_shared_inc, ssh from virt.migrate, and python2/python3 args from salt.utils.thin.gen_min and .gen_thin (#60893) +.UNINDENT +.SS Deprecated +.INDENT 0.0 +.IP \(bu 2 +The _ext_nodes alias to the master_tops function was added back in 3004 to maintain backwards compatibility with older supported versions. This alias will now be removed in 3006. This change will break Master and Minion communication compatibility with Salt minions running versions 3003 and lower. (#60980) +.IP \(bu 2 +utils/boto3_elasticsearch is no longer needed (#59882) +.IP \(bu 2 +Changed "manufacture" grain to "manufacturer" for Solaris on SPARC to unify the name across all platforms. The old "manufacture" grain is now deprecated and will be removed in Sulfur (#60511) +.IP \(bu 2 +Deprecate \fBsalt.payload.Serial\fP (#60953) +.UNINDENT +.SS Changed +.INDENT 0.0 +.IP \(bu 2 +Changed nginx.version to return version without \fBnginx/\fP prefix. (#57111) +.IP \(bu 2 +Updated Slack webhook returner to support event returns on salt\-master (#57182) +.IP \(bu 2 +Parsing Epoch out of version during pkg remove, since yum can\(aqt handle that in all of the cases. (#57881) +.IP \(bu 2 +Add extra onfail req check in the state engine to allow onfail to be used with onchanges and other reqs in the same state (#59026) +.IP \(bu 2 +Changed the default character set used by \fButils.pycrypto.secure_password()\fP to include symbols and implemented arguments to control the used character set. (#59486) +.UNINDENT +.SS Fixed +.INDENT 0.0 +.IP \(bu 2 +Set default \(aqbootstrap_delay\(aq to 0 (#61005) +.IP \(bu 2 +Fixed issue where multiple args to netapi were not preserved (#59182) +.IP \(bu 2 +Handle all repo formats in the aptpkg module. (#60971) +.IP \(bu 2 +Do not break master_tops for minion with version lower to 3003 +This is going to be removed in Salt 3006 (Sulfur) (#60980) +.IP \(bu 2 +Reverting changes in PR #60150. Updating installed and removed functions to return changes when test=True. (#60995) +.IP \(bu 2 +Handle signals and properly exit, instead of raising exceptions. (#60391, #60963) +.IP \(bu 2 +Redirect imports of \fBsalt.ext.six\fP to \fBsix\fP (#60966) +.IP \(bu 2 +Surface strerror to user state instead of returning false (#20789) +.IP \(bu 2 +Fixing _get_envs() to preserve the order of pillar_roots. _get_envs() returned pillar_roots in a non\-deterministic order. (#24501) +.IP \(bu 2 +Fixes salt\-cloud \fBKeyError\fP that occurs when there exists any subnets with no tags when profiles use \fBsubnetname\fP (#44330) +.IP \(bu 2 +Fixes postgres_local_cache by removing duplicate unicode encoding. (#46942) +.IP \(bu 2 +Fixing the state aggregation system to properly handle requisities. +Fixing pkg state to exclude packages from aggregation if the hold attribute is in the state. (#47628) +.IP \(bu 2 +fix issue that allows case sensitive files to be carried through (#47969) +.IP \(bu 2 +Allow GCE Salt Cloud to use previously created IP Addresses. (#48947) +.IP \(bu 2 +Fixing rabbitmq.list_user_permissions to ensure we are returning a permission list with three elements even when some values are empty. (#49115) +.IP \(bu 2 +Periodically restart the fileserver update process to avoid leaks (#50313) +.IP \(bu 2 +Fix default value to dictionary for mine_function (#50695) +.IP \(bu 2 +Allow user.present to work on Alpine Linux by fixing linux_shadow.info (#50979) +.IP \(bu 2 +Ensure that zypper is called with only one \-\-no\-refresh parameter (#51382) +.IP \(bu 2 +Fixed fileclient cachedir path switching from master to minion due to incorrect MasterMinion configuration (#52288) +.IP \(bu 2 +Fixed the container detection inside virtual machines (#53868) +.IP \(bu 2 +Fix invalid dnf command when obsoletes=True in pkg.update function (#54224) +.IP \(bu 2 +Jinja renderer resolves wrong relative paths when importing subdirectories (#55159) +.IP \(bu 2 +Fixed bug #55262 where \fBsalt.modules.iptables\fP would call \fBcmd.run\fP and receive and interpret interspersed \fBstdout\fP and \fBstderr\fP output from subprocesses. (#55262) +.IP \(bu 2 +Updated pcs support to handle auth and setup for new syntax supporting version 0.10 (#56924) +.IP \(bu 2 +Reinstate ignore_cidr option in salt\-cloud openstack driver (#57127) +.IP \(bu 2 +Fix for network.wolmatch runner displaying \(aqinvalid arguments\(aq error with valid arguments (#57473) +.IP \(bu 2 +Fixed bug 57490, which prevented package installation for Open Euler and Issabel PBX. Both Open Euler and Issabel PBX use Yum for package management, added them to yumpkg.py. (#57490) +.IP \(bu 2 +Better handling of bad RSA public keys from minions (#57733) +.IP \(bu 2 +Fixing various functions in the file state module that use user.info to get group information, certain hosts particularly proxy minions do not have the user.info function available. (#57786) +.IP \(bu 2 +Do not monkey patch yaml loaders: Prevent breaking Ansible filter modules (#57995) +.IP \(bu 2 +Fix \-\-subset command line option, and support old \(aqsub\(aq parameter name in cmd_subset for backwards compatibility (#58600) +.IP \(bu 2 +When calling salt.utils.http.query with a HEAD method to check for the existence of a source ensure that decode_body is False, so the file is not downloaded into memory when we don\(aqt need the contents. (#58881) +.IP \(bu 2 +Update the runas user on freebsd for postgres versions >9.5, since freebsd will be removing the package on 2021\-05\-13. (#58915) +.IP \(bu 2 +Fix pip module linked requirements file parsing (#58944) +.IP \(bu 2 +Fix incorrect hostname quoting in /etc/sysconfig/networking on Red Hat family OS. (#58956) +.IP \(bu 2 +Fix Xen DomU virt detection in grains for long running machines. (#59001) +.IP \(bu 2 +add encoding when windows encoding is not defaulting to utf8 (#59063) +.IP \(bu 2 +Fix "aptpkg.normalize_name" in case the arch is "all" for DEB packages (#59269) +.IP \(bu 2 +Astra Linux now considered a Debian family distro (#59332) +.IP \(bu 2 +Reworking the mysql module and state so that passwordless does not try to use unix_socket until unix_socket is set to True. (#59337) +.IP \(bu 2 +Fixed the zabbix module to read the connection data from pillar. (#59338) +.IP \(bu 2 +Fix crash on "yumpkg" execution module when unexpected output at listing patches (#59354) +.IP \(bu 2 +Remove return that had left over py2 code from win_path.py (#59396) +.IP \(bu 2 +Don\(aqt create spicevmc channel for Xen virtual machines (#59416) +.IP \(bu 2 +Fix win_servermanager.install so it will reboot when restart=True is passed (#59424) +.IP \(bu 2 +Clear the cached network interface grains during minion init and grains refresh (#59490) +.IP \(bu 2 +Normalized grain output for LXC containers (#59573) +.IP \(bu 2 +Fix typo in \(aqsalt/states/cmd.py\(aq to use "comment" instead of "commnd". (#59581) +.IP \(bu 2 +add aliyun linux support and set alinux as redhat family (#59686) +.IP \(bu 2 +Don\(aqt fail updating network without netmask ip attribute (#59692) +.IP \(bu 2 +Fixed using reserved keyword \(aqset\(aq as function argument in modules/ipset.py (#59714) +.IP \(bu 2 +Return empty changes when nothing has been done in virt.defined and virt.running states (#59739) +.IP \(bu 2 +Import salt.utils.azurearm instead of using __utils__ from loader in azure cloud. This fixes an issue where __utils__ would become unavailable when we are using the ThreadPool in azurearm. (#59744) +.IP \(bu 2 +Fix an issue with the LGPO module when the gpt.ini file contains unix style line +endings (/n). This was happening on a Windows Server 2019 instance created in +Google Cloud Platform (GCP). (#59769) +.IP \(bu 2 +The \fBansiblegate\fP module now correctly passes keyword arguments to Ansible module calls (#59792) +.IP \(bu 2 +Make sure cmdmod._log_cmd handles tuples properly (#59793) +.IP \(bu 2 +Updating the add, delete, modify, enable_job, and disable_job functions to return appropriate changes. (#59844) +.IP \(bu 2 +Apply pre\-commit changes to entire codebase. (#59847) +.IP \(bu 2 +Fix Hetzner cloud driver does not recognize machines when rolling out a map (#59864) +.IP \(bu 2 +Update Windows build deps & DLLs, Use Python 3.8, libsodium.dll 1.0.18, OpenSSL dlls to 1.1.1k (#59865) +.IP \(bu 2 +Salt api verifies proper log file path when providing \(aq\-\-log\-file\(aq from the cli (#59880) +.IP \(bu 2 +Detect Mendel Linux as Debian (#59892) +.IP \(bu 2 +Fixed compilation of requisite_ins by also checking state type along with name/id (#59922) +.IP \(bu 2 +Fix xen._get_vm() to not break silently when a VM and a template on XenServer have the same name. (#59932) +.IP \(bu 2 +Added missing space for nftables.build_rule when using saddr or daddr. (#59958) +.IP \(bu 2 +Add back support to load old entrypoints by iterating instead of type checking (#59961) +.IP \(bu 2 +Fixed interrupting salt\-call in a pdb session. (#59966) +.IP \(bu 2 +Validate we can import map files in states (#60003) +.IP \(bu 2 +Update alter_db to return True or False depending on the success of failure of the alter. Update grant_exists to only use the full list of available privileges when the grant is on the global level, eg. datbase is "\fI\&.\fP". (#60031) +.IP \(bu 2 +Fixed firewalld.list_zones when any "rich rules" is set (#60033) +.IP \(bu 2 +IPCMessageSubscriber objects expose their connect method as a corotine so they +can be wrapped by SyncWrapper. (#60049) +.IP \(bu 2 +Allow for Napalm dependency netmiko_mod to load correctly when used by Napalm with Cisco IOS (#60061) +.IP \(bu 2 +Ensure proper access to the created temporary file when \fBrunas\fP is passed to \fBcmd.exec_code_all\fP (#60072) +.IP \(bu 2 +Fixed an IndexError in pkgng.latest_version when querying an unknown package. (#60105) +.IP \(bu 2 +Fixed pkgng.latest_version when querying by origin (e.g. "shells/bash"). (#60108) +.IP \(bu 2 +Gracefuly handle errors in virt.vm_info (#60132) +.IP \(bu 2 +The LGPO Module now uses "Success and Failure" for normal audit settings and advanced audit settings (#60142) +.IP \(bu 2 +Fixing tests/pytests/unit/utils/scheduler/test_eval.py tests so the sleep happens before the status, so the job is given time before we check it. (#60149) +.IP \(bu 2 +Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5. (#60168) +.IP \(bu 2 +Fixed ValueError exception in state.show_state_usage (#60179) +.IP \(bu 2 +Redact the username and password when something goes wrong when using an HTTP source and we raise an exception. (#60203) +.IP \(bu 2 +Inject the Ansible functions into Salt\(aqs \fBansiblegate\fP module which was broken on the 3001 release. (#60207) +.IP \(bu 2 +Figure out the available Python version inside containers when executing "dockermod.call" function (#60229) +.IP \(bu 2 +Handle IPv6 route types such as anycast, multicast, etc when returned from IPv6 route table queries (#60232) +.IP \(bu 2 +Move the commonly used code that converts a list to a dictionary into salt.utils.beacons. Fixing inotify beacon close function to ensure the configuration is converted from the provided list format into a dictionary. (#60241) +.IP \(bu 2 +Set name of engine subprocesses (#60259) +.IP \(bu 2 +Properly discover block devices path in virt.running (#60296) +.IP \(bu 2 +Avoid exceptions when handling some exception cases. (#60330) +.IP \(bu 2 +Fixed faulty error message in npm.installed state. (#60339) +.IP \(bu 2 +Port option reinstated for Junos Proxy (accidentally removed) (#60340) +.IP \(bu 2 +Now hosts.rm_host can remove entries from /etc/hosts when this file have inline comments. (#60351) +.IP \(bu 2 +Fixes issue where the full same name is not used when making rights assignments with group policy (#60357) +.IP \(bu 2 +Fixed zabbix_host.present to not overwrite inventory_mode to "manual" every time inventory is updated. (#60382) +.IP \(bu 2 +Allowed zabbix_host.present to do partial updates of inventory, also don\(aqt erase everything if inventory is missing in state definition. (#60389) +.IP \(bu 2 +Fixing the mysql_cache module to handle binary inserting binary data into the database. Initially adding tests. (#60398) +.IP \(bu 2 +Fixed host_inventory_get to not throw an exception if host does not exist (#60418) +.IP \(bu 2 +Check for /dev/kvm to detect KVM hypervisor. (#60419) +.IP \(bu 2 +Fixing file.accumulated handling of dependencies when the state_id is used instead of {function: state_id} format. (#60426) +.IP \(bu 2 +Adding the ability for yumpkg.remove to handle package names with widdcards. (#60461) +.IP \(bu 2 +Pass emulator path to get guest capabilities from libvirt (#60491) +.IP \(bu 2 +virt.get_disks: properly report qemu\-img errors (#60512) +.IP \(bu 2 +Make all platforms have psutils. This prevents a minion from starting if an instance is all ready running. (#60523) +.IP \(bu 2 +Ignore configuration for \(aqenable_fqdns_grains\(aq for AIX, Solaris and Juniper, assume False (#60529) +.IP \(bu 2 +Remove check for TIAMAT_BUILD enforcing USE_STATIC_REQUIREMENTS, this is now controlled by Tiamat v7.10.1 and above (#60559) +.IP \(bu 2 +Have the beacon call run through a try...except, catching any errors, logging and firing an event that includes the error. +Fixing the swapusage beacon to ensure value is a string before we attempt to filter out the %. (#60585) +.IP \(bu 2 +Refactor loader into logical sub\-modules (#60594) +.IP \(bu 2 +Clean up references to ZMQDefaultLoop (#60617) +.IP \(bu 2 +change dep warn from Silicon to Phosphorus for the cmd,show,system_info and add_config functions in the nxos module. (#60669) +.IP \(bu 2 +Fix bug 60602 where the hetzner cloud provider isn\(aqt recognized correctly (#60675) +.IP \(bu 2 +Fix the \fBpwd.getpwnam\fP caching issue on macOS user module (#60676) +.IP \(bu 2 +Fixing beacons that can include a value in their configuration that may or may not included a percentage. We want to handle the situation where the percentage sign is not included and the value is not handled as a string. (#60684) +.IP \(bu 2 +Fix RuntimeError in process manager (#60749) +.IP \(bu 2 +Ensure all data that is being passed along to LDAP is in an OrderedSet and contains bytes. (#60760) +.IP \(bu 2 +Update the AWS API version so VMs spun up by salt\-cloud where the VPC has it enabled to assign ipv6 addresses by default, actually get ipv6 addresses assigned by default. (#60804) +.IP \(bu 2 +Remove un\-needed singletons from tranports (#60851) +.UNINDENT +.SS Added +.INDENT 0.0 +.IP \(bu 2 +Add windows support for file.patch with patch.exe from git for windows optional packages (#44783) +.IP \(bu 2 +Added ability to pass exclude kwarg to salt.state inside orchestrate. (#49130) +.IP \(bu 2 +Added \fBsuccess_stdout\fP and \fBsuccess_stderr\fP arguments to \fBcmd.run\fP, to override default return code behavior. (#50597) +.IP \(bu 2 +The netbox pillar now been enhanced to add support for querying virtual machines +(in addition to devices), as well as minion interfaces and associated IP +addresses. (#51490) +.IP \(bu 2 +Add support for transactional systems, like openSUSE MicroOS (#58519) +.IP \(bu 2 +Added namespace headers to allow use of namespace from config to communicate with Vault Enterprise namespaces (#58585) +.IP \(bu 2 +boto3mod unit tests (#58713) +.IP \(bu 2 +New decorators \fBallow_one_of()\fP and \fBrequire_one_of()\fP (#58742) +.IP \(bu 2 +Added \fBnosync\fP switch to disable initial raid synchronization (#59193) +.IP \(bu 2 +Expanded the documentation for the netbox pillar. (#59398) +.IP \(bu 2 +Rocky Linux has been added to the RedHat os_family. (#59682) +.IP \(bu 2 +Add "poudriere \-i \-j jail_name" option to list jail information for poudriere (#59831) +.IP \(bu 2 +Added the grains.uuid on Windows platform (#59888) +.IP \(bu 2 +Add a salt.util.platform check to detect the AArch64 64\-bit extension of the ARM architecture. (#59915) +.IP \(bu 2 +Adding support for Deltaproxy controlled proxy minions into Salt Open. (#60090) +.IP \(bu 2 +Added functions to slsutil execution module to test if files exist in the state tree +Added function to slsutil execution module to search for a file by walking up the state tree (#60159) +.IP \(bu 2 +Allow module_refresh to also refresh available beacons, eg. following a Python library being installed and "refresh_modules" being passed as an argument in a state. (#60541) +.IP \(bu 2 +Add the \fBdetect_remote_minions\fP and \fBremote_minions_port\fP options to allow the master to detect remote ports for connected minions. This will allow users to detect Heist\-Salt minions the master is connected to over port 22 by default. (#60612) +.IP \(bu 2 +Add the python rpm\-vercmp library in the rpm_lowpkg.py module. (#60814) +.IP \(bu 2 +Allow a user to use the aptpkg.py module without installing python\-apt. (#60818) +.UNINDENT +.SS Salt 3004.1 Release Notes +.sp +Version 3004.1 is a CVE security fix release for 3004\&. +.SS Important notice about upgrading +.sp +Version 3004.1 is a security release. 3004.1 minions are not able to +communicate with masters older than 3004.1. You must upgrade your masters +before upgrading minions. +.SS Minion authentication security +.sp +Authentication between masters and minions rely on public/private key +encryption and message signing. To secure minion authentication before you must +pre\-seed the master\(aqs public key on minions. To pre\-seed the minions\(aq master +key, place a copy of the master\(aqs public key in the minion\(aqs pki directory as +\fBminion_master.pub\fP\&. +.SS Security +.INDENT 0.0 +.IP \(bu 2 +Sign authentication replies to prevent MiTM (cve\-2022\-22935) +.IP \(bu 2 +Prevent job and fileserver replays (cve\-2022\-22936) +.IP \(bu 2 +Sign pillar data to prevent MiTM attacks. (cve\-2202\-22934) +.IP \(bu 2 +Fixed targeting bug, especially visible when using syndic and user auth. (CVE\-2022\-22941) (#60413) +.IP \(bu 2 +Fix denial of service in junos ifconfig output parsing. +.UNINDENT +.SS Salt 3004.2 Release Notes +.sp +Version 3004.2 is a CVE security fix release for 3004\&. +.SS Fixed +.INDENT 0.0 +.IP \(bu 2 +Expand environment variables in the root_dir registry key (#61445) +.IP \(bu 2 +Update Markup and contextfunction imports for jinja versions >=3.1. (#61848) +.IP \(bu 2 +Fix bug in tcp transport (#61865) +.IP \(bu 2 +Make sure the correct key is being used when verifying or validating communication, eg. when a Salt syndic is involved use syndic_master.pub and when a Salt minion is involved use minion_master.pub. (#61868) +.UNINDENT +.SS Security +.INDENT 0.0 +.IP \(bu 2 +Fixed PAM auth to reject auth attempt if user account is locked. (cve\-2022\-22967) +.UNINDENT .SS Salt 3003 Release Notes \- Codename Aluminium .SS New Features .SS SCRAM\-SHA\-256 support for PostgreSQL passwords @@ -465687,7 +467360,7 @@ Fix incorrect documentation for pillar_source_merging_strategy (#26396) .IP \(bu 2 Don\(aqt iterate through cloud map errors (#34033) .IP \(bu 2 -Supress noisy warnings when very old pyzmq is used. (#50327) +Suppress noisy warnings when very old pyzmq is used. (#50327) .IP \(bu 2 Fixed glusterfs version parsing for pre\-4.0 (#50707) .IP \(bu 2 @@ -465728,7 +467401,7 @@ Use default timezone offset in scheduler when correct timezone cannot be determi .IP \(bu 2 Pop!_OS 20.04 and 20.10 now support using pkg.* / aptpkg.* (#58395) .IP \(bu 2 -Restoring functionallity of the textfsm module when using textfsm_path argument (#58499) +Restoring functionality of the textfsm module when using textfsm_path argument (#58499) .IP \(bu 2 Invalidate file list cache when cache file has a future last modified time (#58529) .IP \(bu 2 @@ -465864,7 +467537,7 @@ IPCMessageSubscriber objects expose their connect method as a coroutine so they .IP \(bu 2 Import salt.utils.azurearm instead of using __utils__ from loader in azure cloud. This fixes an issue where __utils__ would become unavailable when we are using the ThreadPool in azurearm. (#59744) .IP \(bu 2 -Use contextvars libary from site\-packages if it is intalled. Fixes salt ssh for targets with python <=3.6 (#59942) +Use contextvars library from site\-packages if it is intalled. Fixes salt ssh for targets with python <=3.6 (#59942) .IP \(bu 2 Add back support to load old entrypoints by iterating instead of type checking (#59961) .IP \(bu 2 @@ -465884,7 +467557,7 @@ Add ssh_timeout to kwargs in deploy_script (#59901) .IP \(bu 2 Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5. (#60168) .IP \(bu 2 -Use the right crypto libary for salt.utils.crypt.reinit_crypto (#60215) +Use the right crypto library for salt.utils.crypt.reinit_crypto (#60215) .IP \(bu 2 Stop SSH from hanging if connection is lost. Also added args to customize grace period. (#60216) .IP \(bu 2 @@ -465907,6 +467580,51 @@ Verify the owner of an existing config before trusting it during install. If the .IP \(bu 2 Ensure that sourced file is cached using its hash name (cve\-2021\-21996) .UNINDENT +.SS Salt 3003.4 (2022\-02\-25) +.sp +Version 3003.4 is a CVE security fix release for 3003\&. +.SS Important notice about upgrading +.sp +Version 3003.4 is a security release. 3003.4 minions are not able to +communicate with masters older than 3003.4. You must upgrade your masters +before upgrading minions. +.SS Minion authentication security +.sp +Authentication between masters and minions rely on public/private key +encryption and message signing. To secure minion authentication before you must +pre\-seed the master\(aqs public key on minions. To pre\-seed the minions\(aq master +key, place a copy of the master\(aqs public key in the minion\(aqs pki directory as +\fBminion_master.pub\fP\&. +.SS Security +.INDENT 0.0 +.IP \(bu 2 +Sign authentication replies to prevent MiTM (cve\-2022\-22935) +.IP \(bu 2 +Prevent job and fileserver replays (cve\-2022\-22936) +.IP \(bu 2 +Sign pillar data to prevent MiTM attacks. (cve\-2202\-22934) +.IP \(bu 2 +Fixed targeting bug, especially visible when using syndic and user auth. (CVE\-2022\-22941) (#60413) +.IP \(bu 2 +Fix denial of service in junos ifconfig output parsing. +.UNINDENT +.SS Salt 3003.5 (2022\-07\-05) +.sp +Version 3003.5 is a CVE security fix release for 3003\&. +.SS Fixed +.INDENT 0.0 +.IP \(bu 2 +Update Markup and contextfunction imports for jinja versions >=3.1. (#61848) +.IP \(bu 2 +Fix bug in tcp transport (#61865) +.IP \(bu 2 +Make sure the correct key is being used when verifying or validating communication, eg. when a Salt syndic is involved use syndic_master.pub and when a Salt minion is involved use minion_master.pub. (#61868) +.UNINDENT +.SS Security +.INDENT 0.0 +.IP \(bu 2 +Fixed PAM auth to reject auth attempt if user account is locked. (cve\-2022\-22967) +.UNINDENT .SS Salt 3002 Release Notes \- Codename Magnesium .SS New Features .SS Network Teaming Support Added (RHEL/CentOS) @@ -465947,7 +467665,7 @@ The \fIssh\fP parameter of \fIvirt.migrate\fP has been deprecated. Use a libvirt .SS Changed .INDENT 0.0 .IP \(bu 2 -Allow to specify a custom port for Proxmox connection (#50620) +Allow specifying a custom port for Proxmox connection (#50620) .IP \(bu 2 Changed the lvm.lv_present state to accept a resizefs switch. So, when the logical volume is resized, the filesystem will be resized too. (#55265) @@ -466196,7 +467914,7 @@ Added an execution module for running idem exec modules .IP \(bu 2 Added a state module for running idem states (#57969) .IP \(bu 2 -Added the ability for states to return \fIsub_state_run\(aqs\fP results frome external state engines (#57993) +Added the ability for states to return \fIsub_state_run\(aqs\fP results from external state engines (#57993) .IP \(bu 2 Added salt\-cloud support for Linode APIv4 via the \fBapi_version\fP provider configuration parameter. (#58093) .IP \(bu 2 @@ -466209,7 +467927,7 @@ Adding tests for changes to virtual function for netmiko module. Adding tests fo .IP \(bu 2 Added features config option for feature flags. Added a feature flag \fIenable_slsvars_fixes\fP to enable fixes to tpldir, tplfile and sls_path. -This flag will be depricated in the Phosphorus release when this functionality +This flag will be deprecated in the Phosphorus release when this functionality becomes the default. (#58652) .UNINDENT .SS Salt 3002.1 Release Notes @@ -466248,7 +467966,7 @@ Removing use of undefined varilable in utils/slack.py. (#58753) Restored the ability to specify the amount of extents for a Logical Volume as a percentage. (#58759) .IP \(bu 2 -Ensuring that the version check function is run a second time in all the user related functions incase the user being managed is the connection user and the password has been updated. (#58773) +Ensuring that the version check function is run a second time in all the user related functions in case the user being managed is the connection user and the password has been updated. (#58773) .IP \(bu 2 Allow bytes in gpg renderer (#58794) .IP \(bu 2 @@ -466365,6 +468083,49 @@ Additionally, an audit and a tool was put in place, \fBbandit\fP, to address sim .IP \(bu 2 Ensure that sourced file is cached using its hash name (cve\-2021\-21996) .UNINDENT +.SS Salt 3002.8 (2022\-02\-25) +.sp +Version 3002.8 is a CVE security fix release for 3002\&. +.SS Important notice about upgrading +.sp +Version 3002.8 is a security release. 3002.8 minions are not able to +communicate with masters older than 3002.8. You must upgrade your masters +before upgrading minions. +.SS Minion authentication security +.sp +Authentication between masters and minions rely on public/private key +encryption and message signing. To secure minion authentication before you must +pre\-seed the master\(aqs public key on minions. To pre\-seed the minions\(aq master +key, place a copy of the master\(aqs public key in the minion\(aqs pki directory as +\fBminion_master.pub\fP\&. +.SS Security +.INDENT 0.0 +.IP \(bu 2 +Sign authentication replies to prevent MiTM (cve\-2020\-22935) +.IP \(bu 2 +Sign pillar data to prevent MiTM attacks. (cve\-2022\-22934) +.IP \(bu 2 +Prevent job and fileserver replays (cve\-2022\-22936) +.IP \(bu 2 +Fixed targeting bug, especially visible when using syndic and user auth. (CVE\-2022\-22941) (#60413) +.UNINDENT +.SS Salt 3002.9 (2022\-05\-25) +.sp +Version 3002.9 is a CVE security fix release for 3002\&. +.SS Fixed +.INDENT 0.0 +.IP \(bu 2 +Fixed an error when running on CentOS Stream 8. (#59161) +.IP \(bu 2 +Fix bug in tcp transport (#61865) +.IP \(bu 2 +Make sure the correct key is being used when verifying or validating communication, eg. when a Salt syndic is involved use syndic_master.pub and when a Salt minion is involved use minion_master.pub. (#61868) +.UNINDENT +.SS Security +.INDENT 0.0 +.IP \(bu 2 +Fixed PAM auth to reject auth attempt if user account is locked. (cve\-2022\-22967) +.UNINDENT .SS Salt 3001 Release Notes \- Codename Sodium .SS Python 2 Dropped .sp @@ -467998,7 +469759,9 @@ Total Issue References: \fB15\fP .IP \(bu 2 Total PR References: \fB54\fP .IP \(bu 2 -Contributors: \fB16\fP (\fI\%Ch3LL\fP, \fI\%UtahDave\fP, \fI\%bryceml\fP, \fI\%cmcmarrow\fP, \fI\%dwoz\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%lorengordon\fP, \fI\%mchugh19\fP, \fI\%oeuftete\fP, \fI\%raddessi\fP, \fI\%s0undt3ch\fP, \fI\%sjorge\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%waynew\fP) +Contributors: \fB16\fP (\fI\%Ch3LL\fP, \fI\%UtahDave\fP, \fI\%bryceml\fP, \fI\%cmcmarrow\fP, \fI\%dwoz\fP, \fI\%frogunder\fP, +\fI\%garethgreenaway\fP, \fI\%lorengordon\fP, \fI\%mchugh19\fP, \fI\%oeuftete\fP, \fI\%raddessi\fP, \fI\%s0undt3ch\fP, +\fI\%sjorge\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%waynew\fP) .UNINDENT .SS Changelog for v3000..v3000.1 .sp @@ -470574,7 +472337,14 @@ Total Issue References: \fB70\fP .IP \(bu 2 Total PR References: \fB355\fP .IP \(bu 2 -Contributors: \fB49\fP (\fI\%Akm0d\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Ethyling\fP, \fI\%FireGrace\fP, \fI\%KChandrashekhar\fP, \fI\%ScoreUnder\fP, \fI\%amendlik\fP, \fI\%aplanas\fP, \fI\%arsiesys\fP, \fI\%bbinet\fP, \fI\%bryceml\fP, \fI\%cbosdo\fP, \fI\%cdalvaro\fP, \fI\%chdamianos\fP, \fI\%cmcmarrow\fP, \fI\%cro\fP, \fI\%damianosSemmle\fP, \fI\%dmurphy18\fP, \fI\%doesitblend\fP, \fI\%dwoz\fP, \fI\%felippeb\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%github\-abcde\fP, \fI\%isbm\fP, \fI\%jfindlay\fP, \fI\%lomeroe\fP, \fI\%mattLLVW\fP, \fI\%mattp\-\fP, \fI\%mirceaulinic\fP, \fI\%nicholasmhughes\fP, \fI\%rbthomp\fP, \fI\%rombert\fP, \fI\%rsmekala\fP, \fI\%s0undt3ch\fP, \fI\%sathieu\fP, \fI\%sbrennan4\fP, \fI\%sdodsley\fP, \fI\%simonflood\fP, \fI\%sjorge\fP, \fI\%soer7022\fP, \fI\%stratusjerry\fP, \fI\%tanlingyun2005\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%waynew\fP, \fI\%weswhet\fP, \fI\%xuhcc\fP) +Contributors: \fB49\fP (\fI\%Akm0d\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Ethyling\fP, \fI\%FireGrace\fP, +\fI\%KChandrashekhar\fP, \fI\%ScoreUnder\fP, \fI\%amendlik\fP, \fI\%aplanas\fP, \fI\%arsiesys\fP, \fI\%bbinet\fP, \fI\%bryceml\fP, +\fI\%cbosdo\fP, \fI\%cdalvaro\fP, \fI\%chdamianos\fP, \fI\%cmcmarrow\fP, \fI\%cro\fP, \fI\%damianosSemmle\fP, \fI\%dmurphy18\fP, +\fI\%doesitblend\fP, \fI\%dwoz\fP, \fI\%felippeb\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%github\-abcde\fP, \fI\%isbm\fP, +\fI\%jfindlay\fP, \fI\%lomeroe\fP, \fI\%mattLLVW\fP, \fI\%mattp\-\fP, \fI\%mirceaulinic\fP, \fI\%nicholasmhughes\fP, \fI\%rbthomp\fP, +\fI\%rombert\fP, \fI\%rsmekala\fP, \fI\%s0undt3ch\fP, \fI\%sathieu\fP, \fI\%sbrennan4\fP, \fI\%sdodsley\fP, \fI\%simonflood\fP, +\fI\%sjorge\fP, \fI\%soer7022\fP, \fI\%stratusjerry\fP, \fI\%tanlingyun2005\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, +\fI\%waynew\fP, \fI\%weswhet\fP, \fI\%xuhcc\fP) .UNINDENT .SS Changelog for v2019.2.0..v2019.2.1 .sp @@ -470733,7 +472503,7 @@ ce5b109 Merge pull request \fI\%#54353\fP from cmcmarrow/2019_win_system_skip .IP \(bu 2 94c03e5 Merge pull request \fI\%#54338\fP from dwoz/logging_fixup .IP \(bu 2 -a3e227e Log server closes completely durring shutdown +a3e227e Log server closes completely during shutdown .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#54327\fP: (\fI\%garethgreenaway\fP) [2019.2.1] Catch the AccessDenied exception and continue when running under Py3. @@ -470809,7 +472579,7 @@ ed7103a Attempt to fix integration.shell.test_call test .IP \(bu 2 659c805 Change noise log to debug .IP \(bu 2 -0660b1a Clean up typoes +0660b1a Clean up typos .IP \(bu 2 9f1fe42 Call os.fork less to avoid race conditions .UNINDENT @@ -470843,7 +472613,9 @@ ed7103a Attempt to fix integration.shell.test_call test .IP \(bu 2 993c341 Merge pull request \fI\%#54235\fP from ogd\-software/fix_46034\-2019.2.1 .IP \(bu 2 -93bd30d Add alternative fix for "!" stomping Apparently (after watching Jenkins tests fail), what yaml.safe_load returns depends not on the version of salt, but on some other external dependency. Because of this, fix both possible return values. +93bd30d Add alternative fix for "!" stomping Apparently (after watching Jenkins tests fail), +what yaml.safe_load returns depends not on the version of salt, but on some other external +dependency. Because of this, fix both possible return values. .IP \(bu 2 c95dd4d Add test for this specific bugfix .IP \(bu 2 @@ -470980,7 +472752,7 @@ bdce5f4 Fix detecting msazure deletion with multiple tries .IP \(bu 2 b3c70c3 Merge pull request \fI\%#54264\fP from dwoz/jinja_units .IP \(bu 2 -10a6d53 Fix unit utils jinja when run on thier own +10a6d53 Fix unit utils jinja when run on their own .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#54266\fP: (\fI\%Akm0d\fP) Fix incorrect types on failing cloud tests @@ -471728,13 +473500,13 @@ ba3e867 Merge branch \(aq2019.2.1\(aq into integration_terminate_fix ceaba05 Skip get time test .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#54038\fP: (\fI\%Ch3LL\fP) Pyton3 digitial ocean test fix: to_str on key +\fBPR\fP \fI\%#54038\fP: (\fI\%Ch3LL\fP) Pyton3 digital ocean test fix: to_str on key @ \fI2019\-07\-29 16:54:19 UTC\fP .INDENT 2.0 .IP \(bu 2 4aed833 Merge pull request \fI\%#54038\fP from Ch3LL/do_py3_fix .IP \(bu 2 -f7346db Pyton3 digitial ocean test fix: to_str on key +f7346db Pyton3 digital ocean test fix: to_str on key .INDENT 2.0 .INDENT 3.5 .INDENT 0.0 @@ -471770,7 +473542,7 @@ f95f0e7 Merge branch \(aq2019.2.1\(aq into fix_test_system .IP \(bu 2 cc1cda1 Merge pull request \fI\%#53953\fP from Ch3LL/improve_git_test .IP \(bu 2 -347ea1e Use Sigkill and add time.sleep befor check +347ea1e Use Sigkill and add time.sleep before check .IP \(bu 2 637bf95 Merge branch \(aq2019.2.1\(aq into improve_git_test .IP \(bu 2 @@ -472493,11 +474265,11 @@ e03ab81 Using salt.utils.path.which to find false, on OSX it lives under /usr/bi .IP \(bu 2 353f9d4 Fixing the beacons.reset function. Once the reset has taken place in beacons/__init__.py we need to fire an event back to complete the loop and ensure that everything worked as expected. .IP \(bu 2 -ee3cbc7 fix to how the depends decorator works. Only run the dependancy commands for the module we\(aqre checking. +ee3cbc7 fix to how the depends decorator works. Only run the dependency commands for the module we\(aqre checking. .IP \(bu 2 8440176 Fixing a log issue that pops up after test_gen_thin_compression_fallback_py3 on "OS X, need to ensure that salt.utils.thin.os.close is mocked. .IP \(bu 2 -9767ddd Format for the sqlite3 databse used for the assistive information changed in Mojave, additional columns added. +9767ddd Format for the sqlite3 database used for the assistive information changed in Mojave, additional columns added. .IP \(bu 2 9c8a7e6 Fixing a bug when the roots fileserver and the location is a symlink to another location. This fix ensures that when fsroot is referenced we are using the real path and not the symlink path. .UNINDENT @@ -473200,7 +474972,7 @@ e0b0ba8 Handling in flaky when maximum number of attempts raised and the excepti .IP \(bu 2 78aeb61 Dropping the version check for InstallationError down to anything 1.0 or greater. Removing the test that simulates versions of pip below 1.0. .IP \(bu 2 -4ec90c2 Adding an jinja if statement to only the python parameter if the result from get_python_executable is a valid value. Maintaining backwards compatibilty to run tests without Nox. +4ec90c2 Adding an jinja if statement to only the python parameter if the result from get_python_executable is a valid value. Maintaining backwards compatibility to run tests without Nox. .UNINDENT .UNINDENT .UNINDENT @@ -473501,7 +475273,7 @@ e6c2ae4 Fix deprecation warning in msgpack >= 0.5.2 .IP \(bu 2 6375944 Add ubuntu1804 to pr tests .IP \(bu 2 -8fdb04d SIGKILL is not alwasy available use a local variable +8fdb04d SIGKILL is not always available use a local variable .IP \(bu 2 4d6b8da Fix linter .IP \(bu 2 @@ -473535,9 +475307,9 @@ b0aa287 Fix missing class wart .IP \(bu 2 52ca668 Skip tests when no libcloud .IP \(bu 2 -2cf4b98 Add centos\-6\-py2 and debain 8,9 py2 and 3 to PR tests +2cf4b98 Add centos\-6\-py2 and Debian 8,9 py2 and 3 to PR tests .IP \(bu 2 -522599d Dont fail just because some random process died +522599d Don\(aqt fail just because some random process died .IP \(bu 2 34cef86 Ignore super not called .IP \(bu 2 @@ -473563,7 +475335,7 @@ f73420b Install mock on Python < 3.6 .IP \(bu 2 f4ae97f Upgrade etcd to > 0.4.2 .IP \(bu 2 -381f5fe Limit and reduce the ammount of log records sent over the wire +381f5fe Limit and reduce the amount of log records sent over the wire .IP \(bu 2 0c94b5d More entries to ignore .IP \(bu 2 @@ -473645,7 +475417,7 @@ ff6d3c6 We don\(aqt need to be root to run these tests .IP \(bu 2 f86a44e Use the real python executable path when running within a virtualenv .IP \(bu 2 -3d407e8 Add a helper to return the path to the real pytohn executable +3d407e8 Add a helper to return the path to the real python executable .IP \(bu 2 ea9d246 We must also provide \fIvenv_bin\fP when running within a virtualenv .IP \(bu 2 @@ -473661,7 +475433,7 @@ a1eb400 Specify the SHA we need .IP \(bu 2 870b899 Remove unused argument .IP \(bu 2 -1656cb4 Disable re\-runing failed tests for now +1656cb4 Disable re\-running failed tests for now .IP \(bu 2 6db4141 Also ignore multiprocessing coverage files .IP \(bu 2 @@ -474445,7 +476217,7 @@ e3f5be3 Use uncommon item in mine delete test .IP \(bu 2 1bdaf29 Ensure exceptions in service future are handled .IP \(bu 2 -c7ad732 Use six.reraise for py3 compatability +c7ad732 Use six.reraise for py3 compatibility .IP \(bu 2 29999b0 Close message service on subscriber close .IP \(bu 2 @@ -474753,7 +476525,7 @@ f45d29b Remove un\-needed test .IP \(bu 2 c9ec8b1 Ensure exceptions in service future are handled .IP \(bu 2 -25f5a90 Use six.reraise for py3 compatability +25f5a90 Use six.reraise for py3 compatibility .IP \(bu 2 6d80789 Fix ipc unit tests .IP \(bu 2 @@ -475019,7 +476791,7 @@ cc46e9c Merge branch \(aq2018.3\(aq into bugs/49147_ipc_subscriber .IP \(bu 2 ae0e18f Merge branch \(aq2018.3\(aq into zone\-clarification .IP \(bu 2 -e8c8dba Added in an explaination of the \-\-zone flag approved in \fI\%#52251\fP +e8c8dba Added in an explanation of the \-\-zone flag approved in \fI\%#52251\fP .INDENT 2.0 .IP \(bu 2 4908ed3 Merge branch \(aq2017.7\(aq into merge\-2018.3 @@ -476094,7 +477866,7 @@ e37fc20 Merge branch \(aq2018.3\(aq into merge\-2018.3 e75fc1c Merge pull request \fI\%#51747\fP from ymasson/fix_mysql_grants .INDENT 2.0 .IP \(bu 2 -f614dd7 Fix escaping for special charaters +f614dd7 Fix escaping for special characters .UNINDENT .IP \(bu 2 b1f7e85 Merge pull request \fI\%#51387\fP from chrillux/make\-binarydata\-output\-possible @@ -476266,7 +478038,7 @@ ba8d0ea Merge pull request \fI\%#51547\fP from s0undt3ch/2017.7 .IP \(bu 2 40cb4db Merge branch \(aq2017.7\(aq into multi_master .IP \(bu 2 -2dc5171 Hanlde multi_master failover when daemonized +2dc5171 Handle multi_master failover when daemonized .UNINDENT .IP \(bu 2 8df083c Merge pull request \fI\%#51608\fP from dwoz/wait_minions_2017.7 @@ -476460,9 +478232,9 @@ b2c9c3b Use makedirs instead of mkdir .IP \(bu 2 d879d18 fix broken network.py .IP \(bu 2 -76770f3 ss commmand replace to netstat command +76770f3 ss command replace to netstat command .IP \(bu 2 -241707e ss commmand replace to netstat command +241707e ss command replace to netstat command .INDENT 2.0 .INDENT 3.5 .INDENT 0.0 @@ -476676,7 +478448,7 @@ f67a529 Remove unused imports .IP \(bu 2 5eec144 Add \fI\&.coveragerc\fP .IP \(bu 2 -aa108d5 Run tests from tox, wether runtests or pytest +aa108d5 Run tests from tox, whether runtests or pytest .IP \(bu 2 80a3826 Update TODO .IP \(bu 2 @@ -477079,7 +478851,7 @@ a35c023 Don\(aqt use a decorator that assumes /etc/apt/sources.list.d exists .IP \(bu 2 3f17776 Actually, remove python\-ldap. It needs system deps. Have salt\-jenkins do it. .IP \(bu 2 -afcb6bd Fix the \fIldap\fP pacakge name in requirements/tests.txt +afcb6bd Fix the \fIldap\fP package name in requirements/tests.txt .IP \(bu 2 588cb87 Merge pull request \fI\%#51454\fP from terminalmage/fix\-deprecation\-warning .INDENT 2.0 @@ -477210,7 +478982,7 @@ ee2f10a Add \fIpytest\-salt\-from\-filenames\fP to pytest requirements .IP \(bu 2 1d4b9f5 Add \fI\&.coveragerc\fP .IP \(bu 2 -78c6d68 Run tests from tox, wether runtests or pytest +78c6d68 Run tests from tox, whether runtests or pytest .IP \(bu 2 c02757d gitfs: Fix use of deprecated pygit2 function .INDENT 2.0 @@ -477233,7 +479005,7 @@ c108825 Fix missing file error in file.directory. .IP \(bu 2 ad17ac5 Fix mocks to reflect changes to git.latest state .IP \(bu 2 -c817213 Don\(aqt try to run git.config_get_regexp from nonexistant cwd +c817213 Don\(aqt try to run git.config_get_regexp from nonexistent cwd .IP \(bu 2 f8c3e44 git.latest: add auth to merge/reset calls when LFS used with SSH auth .INDENT 2.0 @@ -477580,7 +479352,7 @@ f0cc183 Fileserver modules can be loaded from the fileserver. .IP \(bu 2 6a9daa7 Merge branch \(aq2018.3\(aq into 51208_file_manage_escaped_double_quotes .IP \(bu 2 -0bf468c Fixing lint. Using a constant intead of looking for the condition in the string. +0bf468c Fixing lint. Using a constant instead of looking for the condition in the string. .IP \(bu 2 a233dbc Ensuring we can handle a string that contains single quote + an escaped double quote. .UNINDENT @@ -477693,7 +479465,7 @@ a26ba7f Don\(aqt fail the test because of order .IP \(bu 2 6d62156 Add \fI\&.coveragerc\fP .IP \(bu 2 -6bb56ce Run tests from tox, wether runtests or pytest +6bb56ce Run tests from tox, whether runtests or pytest .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#51307\fP: (\fI\%s0undt3ch\fP) Add 2019.2 codecov config @@ -478234,7 +480006,8 @@ Total Issue References: \fB12\fP .IP \(bu 2 Total PR References: \fB26\fP .IP \(bu 2 -Contributors: \fB13\fP (\fI\%Akm0d\fP, \fI\%Ch3LL\fP, \fI\%Oloremo\fP, \fI\%OrlandoArcapix\fP, \fI\%bryceml\fP, \fI\%dhiltonp\fP, \fI\%dwoz\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%javierbertoli\fP, \fI\%pizzapanther\fP, \fI\%s0undt3ch\fP, \fI\%twangboy\fP) +Contributors: \fB13\fP (\fI\%Akm0d\fP, \fI\%Ch3LL\fP, \fI\%Oloremo\fP, \fI\%OrlandoArcapix\fP, \fI\%bryceml\fP, \fI\%dhiltonp\fP, \fI\%dwoz\fP, +\fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%javierbertoli\fP, \fI\%pizzapanther\fP, \fI\%s0undt3ch\fP, \fI\%twangboy\fP) .UNINDENT .SS Changelog for v2019.2.1..v2019.2.2 .sp @@ -478335,7 +480108,7 @@ a41dc59 Update 2019.2.2.rst .IP \(bu 2 9e3914a Merge pull request \fI\%#54826\fP from dwoz/issue_54755 .IP \(bu 2 -0bad9cb Handle locals and globals separatly +0bad9cb Handle locals and globals separately .IP \(bu 2 bcbe9a2 Only purge pip when needed .IP \(bu 2 @@ -481174,7 +482947,14 @@ Total Issue References: \fB74\fP .IP \(bu 2 Total PR References: \fB255\fP .IP \(bu 2 -Contributors: \fB55\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Giandom\fP, \fI\%Kimol\fP, \fI\%L4rS6\fP, \fI\%LukeCarrier\fP, \fI\%OrlandoArcapix\fP, \fI\%TamCore\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%aesposito91\fP, \fI\%bbinet\fP, \fI\%bdrung\fP, \fI\%boltronics\fP, \fI\%bosatsu\fP, \fI\%clan\fP, \fI\%corywright\fP, \fI\%damon\-atkins\fP, \fI\%dincamihai\fP, \fI\%dmurphy18\fP, \fI\%dnABic\fP, \fI\%douglasjreynolds\fP, \fI\%dwoz\fP, \fI\%edgan\fP, \fI\%ejparker12\fP, \fI\%esell\fP, \fI\%ezh\fP, \fI\%femnad\fP, \fI\%folti\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jasperla\fP, \fI\%johnj\fP, \fI\%mateiw\fP, \fI\%mcalmer\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%opdude\fP, \fI\%pcn\fP, \fI\%pruiz\fP, \fI\%psagers\fP, \fI\%psyer\fP, \fI\%rallytime\fP, \fI\%robinro\fP, \fI\%s0undt3ch\fP, \fI\%samodid\fP, \fI\%shengis\fP, \fI\%skjaro\fP, \fI\%tankywoo\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%yannj\-fr\fP, \fI\%zmedico\fP) +Contributors: \fB55\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Giandom\fP, \fI\%Kimol\fP, \fI\%L4rS6\fP, +\fI\%LukeCarrier\fP, \fI\%OrlandoArcapix\fP, \fI\%TamCore\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%aesposito91\fP, +\fI\%bbinet\fP, \fI\%bdrung\fP, \fI\%boltronics\fP, \fI\%bosatsu\fP, \fI\%clan\fP, \fI\%corywright\fP, \fI\%damon\-atkins\fP, +\fI\%dincamihai\fP, \fI\%dmurphy18\fP, \fI\%dnABic\fP, \fI\%douglasjreynolds\fP, \fI\%dwoz\fP, \fI\%edgan\fP, \fI\%ejparker12\fP, +\fI\%esell\fP, \fI\%ezh\fP, \fI\%femnad\fP, \fI\%folti\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jasperla\fP, +\fI\%johnj\fP, \fI\%mateiw\fP, \fI\%mcalmer\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%opdude\fP, \fI\%pcn\fP, \fI\%pruiz\fP, +\fI\%psagers\fP, \fI\%psyer\fP, \fI\%rallytime\fP, \fI\%robinro\fP, \fI\%s0undt3ch\fP, \fI\%samodid\fP, \fI\%shengis\fP, \fI\%skjaro\fP, +\fI\%tankywoo\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%yannj\-fr\fP, \fI\%zmedico\fP) .UNINDENT .sp \fBWARNING:\fP @@ -481239,7 +483019,7 @@ environments. .sp In \fB2018.3.0\fP salt\-ssh was configured to automatically update the flat roster file if a minion was not found for salt\-ssh. This was decided to be -undesireable as a default. The \fB\-\-skip\-roster\fP flag has been removed and +undesirable as a default. The \fB\-\-skip\-roster\fP flag has been removed and replaced with \fB\-\-update\-roster\fP, which will enable salt\-ssh to add minions to the flat roster file. This behavior can also be enabled by setting \fBssh_update_roster: True\fP in the master config file. @@ -481755,7 +483535,7 @@ d228e72477 update ubuntu\-rolling to 18.04 ed69821d19 Merge pull request \fI\%#47433\fP from s0undt3ch/2017.7 .INDENT 2.0 .IP \(bu 2 -5abadf25d6 Add missing requirements files not commited in \fI\%#47106\fP +5abadf25d6 Add missing requirements files not committed in \fI\%#47106\fP .UNINDENT .UNINDENT .UNINDENT @@ -482119,7 +483899,7 @@ bcef34f7e1 Merge pull request \fI\%#47334\fP from terminalmage/ldap_pillar .IP \(bu 2 65c3ba7ff1 Remove useless documentation .IP \(bu 2 -5d67cb27de Remove unncessary commented line +5d67cb27de Remove unnecessary commented line .INDENT 2.0 .INDENT 3.5 .INDENT 0.0 @@ -482310,7 +484090,7 @@ e37a93a1ca Remove redundent close call .IP \(bu 2 b2ae5889b7 Close the temporary file handle .IP \(bu 2 -9f7f83a975 Use salt.utils.fopen for line ending consistancy +9f7f83a975 Use salt.utils.fopen for line ending consistency .UNINDENT .IP \(bu 2 b221860151 Merge pull request \fI\%#47335\fP from dwoz/pip_test_fix @@ -482721,13 +484501,13 @@ fff4f8c1a5 Merge pull request \fI\%#47280\fP from gtmanfred/localectl 9075070573 make sure not to send invalid information .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#46977\fP: (\fI\%gtmanfred\fP) [2018.3.0] Backwards compatibilty breaking change in 2018.3.0 (refs: \fI\%#47038\fP) +\fBISSUE\fP \fI\%#46977\fP: (\fI\%gtmanfred\fP) [2018.3.0] Backwards compatibility breaking change in 2018.3.0 (refs: \fI\%#47038\fP) .IP \(bu 2 \fBPR\fP \fI\%#47038\fP: (\fI\%garethgreenaway\fP) [2018.3] fix to fileclient.py @ \fI2018\-04\-25 14:57:04 UTC\fP .INDENT 2.0 .IP \(bu 2 -205701dcbe Merge pull request \fI\%#47038\fP from garethgreenaway/46977_fixing_fileclient_forward_compatibilty +205701dcbe Merge pull request \fI\%#47038\fP from garethgreenaway/46977_fixing_fileclient_forward_compatibility .IP \(bu 2 ba01d2133a Updating version.py to include Magnesium. .IP \(bu 2 @@ -482886,7 +484666,7 @@ bcdef641e8 Removing target and tgt_type from the cmdline that is passed along to .IP \(bu 2 2ed4b38b02 Merge pull request \fI\%#47142\fP from garethgreenaway/47047_passing_pillar_to_slack_aliases .IP \(bu 2 -6f183e1d80 Initial commmit for unit/engines/test_slack_engine +6f183e1d80 Initial commit for unit/engines/test_slack_engine .IP \(bu 2 a2840fc230 Only include the rest of the cmdline if the cmd is an alias. .IP \(bu 2 @@ -483043,7 +484823,7 @@ eb5ac51a48 Merge pull request \fI\%#47102\fP from gtmanfred/2017.7 .IP \(bu 2 4c07a3d1e9 fix other tests .IP \(bu 2 -b71e3d8a04 dont allow using no_use_wheel for pip 10.0.0 or newer +b71e3d8a04 don\(aqt allow using no_use_wheel for pip 10.0.0 or newer .UNINDENT .IP \(bu 2 c1dc42e67e Merge pull request \fI\%#47037\fP from twangboy/fix_dev_scripts @@ -483343,7 +485123,7 @@ e3c969da81 PY3: Ensure binary contents work with file.managed .IP \(bu 2 a52137ee36 Merge pull request \fI\%#47109\fP from garethgreenaway/46943_slack_engine_fixes .IP \(bu 2 -02baa76595 Fixing a bug that occured when a comment was added to a message sent to Slack by Salt. Also making \fIslack_engine:groups_pillar\fP optional. +02baa76595 Fixing a bug that occurred when a comment was added to a message sent to Slack by Salt. Also making \fIslack_engine:groups_pillar\fP optional. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47045\fP: (\fI\%tankywoo\fP) Fix ba7d00f5 for gentoo pkg.installed method @@ -483541,20 +485321,20 @@ dc2a72d44f Fixing aliases in slack engine .IP \(bu 2 c33de7c82d Merge pull request \fI\%#47009\fP from garethgreenaway/46947_slack_documentation_update_catch_non_dicts .IP \(bu 2 -f0fadbb4ce Fixing indention for slack documention. Updating try..except to ensure we catch when groups aren\(aqt dicts. +f0fadbb4ce Fixing indention for slack documentation. Updating try..except to ensure we catch when groups aren\(aqt dicts. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47023\fP: (\fI\%rallytime\fP) Back\-port \fI\%#46997\fP to 2018.3 @ \fI2018\-04\-12 15:05:24 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#46997\fP: (\fI\%LukeCarrier\fP) Fix respository (=> repository) typo in sls_build (refs: \fI\%#47023\fP) +\fBPR\fP \fI\%#46997\fP: (\fI\%LukeCarrier\fP) Fix repository (=> repository) typo in sls_build (refs: \fI\%#47023\fP) .IP \(bu 2 \fBPR\fP \fI\%#44638\fP: (\fI\%terminalmage\fP) Many improvements to docker network and container states (refs: \fI\%#46997\fP) .IP \(bu 2 68d17c71f1 Merge pull request \fI\%#47023\fP from rallytime/bp\-46997 .IP \(bu 2 -c2c60f4ffc Fix respository (=> repository) typo in sls_build +c2c60f4ffc Fix repository (=> repository) typo in sls_build .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47026\fP: (\fI\%rallytime\fP) [2018.3] Merge forward from 2017.7 to 2018.3 @@ -483825,7 +485605,7 @@ c8945e4b2e cleaning up some imports. .IP \(bu 2 dceda5eb88 Moving all jinja filter tests into support/jinja_filters.py. Updaitng integration/ssh/test_jinja_filters.py to use those tests. Adding integration/modules/test_state_jinja_filters.py to also use the common jinja filter tests. .IP \(bu 2 -07d7e3ca01 Adding a new integration test and corresponding state files to test availabilty of jinja filters when using salt\-ssh. +07d7e3ca01 Adding a new integration test and corresponding state files to test availability of jinja filters when using salt\-ssh. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#46880\fP: (\fI\%liquidgecka\fP) rabbitmq_policy broken in 2018.3.0 (refs: \fI\%#46973\fP) @@ -483982,7 +485762,7 @@ bf5034dbdb Merge branch \(aq2017.7\(aq into bugfix\-grain\-virtual_subtype 058bbed221 Merge pull request \fI\%#46799\fP from garethgreenaway/46762_prereq_shenanigans_tests .INDENT 2.0 .IP \(bu 2 -13875e78cf Fixing documention string for test. +13875e78cf Fixing documentation string for test. .IP \(bu 2 3d288c44d4 Fixing test documentation .IP \(bu 2 @@ -484472,7 +486252,7 @@ e8864b7b0b Merge branch \(aq2017.7\(aq into \(aq2018.3\(aq 1222bdbc00 Merge pull request \fI\%#46732\fP from rallytime/bp\-46032 .INDENT 2.0 .IP \(bu 2 -bf0b962dc0 Workaroung python bug in traceback.format_exc() +bf0b962dc0 Workaround python bug in traceback.format_exc() .UNINDENT .IP \(bu 2 50fe1e9480 Merge pull request \fI\%#46749\fP from vutny/doc\-deprecate\-copr @@ -484750,7 +486530,7 @@ fa0b0efe46 Fix some installer script inconsistencies f038e3c452 Merge pull request \fI\%#46571\fP from garethgreenaway/46552_onfail_and_require .INDENT 2.0 .IP \(bu 2 -152c43c843 Accounting for a case when multiple onfails are used along with requires. Previously if you have multiple states using \(aqonfail\(aq and two of those states using a \(aqrequire\(aq against the first one state, the last two will run even if the \(aqonfail\(aq isn\(aqt met because the \(aqrequire\(aq is met because the first state returns true even though it didn\(aqt excute. This change adds an additional hidden variable that is used when checking requisities to determine if the state actually ran. +152c43c843 Accounting for a case when multiple onfails are used along with requires. Previously if you have multiple states using \(aqonfail\(aq and two of those states using a \(aqrequire\(aq against the first one state, the last two will run even if the \(aqonfail\(aq isn\(aqt met because the \(aqrequire\(aq is met because the first state returns true even though it didn\(aqt execute. This change adds an additional hidden variable that is used when checking requisities to determine if the state actually ran. .UNINDENT .IP \(bu 2 2677330e19 Merge pull request \fI\%#46520\fP from gtmanfred/2017.7 @@ -484844,7 +486624,7 @@ e0d201a96f Make sure the docs are correct for the tests .IP \(bu 2 f15f92318d Add tests for salt.utils.win_reg .IP \(bu 2 -f7112b19a2 Submit \fI\%#46527\fP agains 2018.3 +f7112b19a2 Submit \fI\%#46527\fP against 2018.3 .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#46334\fP: (\fI\%sjorge\fP) [2018.3.0rc1] Stacktrace on call to nacl.dec (refs: \fI\%#46426\fP) @@ -484963,7 +486743,7 @@ bb338c464c Fix dimensionsdata test random_name call 5cc11129f1 Merge pull request \fI\%#46511\fP from rallytime/bp\-45769 .INDENT 2.0 .IP \(bu 2 -a8ffceda53 Surpress boto WARNING during decode, reference: \fI\%https://github.com/boto/boto/issues/2965\fP +a8ffceda53 Suppress boto WARNING during decode, reference: \fI\%https://github.com/boto/boto/issues/2965\fP .UNINDENT .IP \(bu 2 0e90c8ca6f Merge pull request \fI\%#46493\fP from terminalmage/issue46207 @@ -485674,7 +487454,7 @@ e0940a9fc4 Properly detect use of the state.orch alias and add orch jid to kwarg .IP \(bu 2 \fBPR\fP \fI\%#45932\fP: (\fI\%The\-Loeki\fP) Fix cmd run_all bg error (refs: \fI\%#46172\fP) .IP \(bu 2 -\fBPR\fP \fI\%#39980\fP: (\fI\%vutny\fP) [2016.3] Allow to use \fIbg\fP kwarg for \fIcmd.run\fP state function (refs: \fI\%#46172\fP, \fI\%#45932\fP) +\fBPR\fP \fI\%#39980\fP: (\fI\%vutny\fP) [2016.3] Allow using \fIbg\fP kwarg for \fIcmd.run\fP state function (refs: \fI\%#46172\fP, \fI\%#45932\fP) .IP \(bu 2 20d869c228 Merge pull request \fI\%#46172\fP from The\-Loeki/fix_cmd_run_all_bg_oxygen .IP \(bu 2 @@ -486613,7 +488393,14 @@ Total Issue References: \fB69\fP .IP \(bu 2 Total PR References: \fB341\fP .IP \(bu 2 -Contributors: \fB55\fP (\fI\%Ch3LL\fP, \fI\%FedericoCeratto\fP, \fI\%KaiSforza\fP, \fI\%L4rS6\fP, \fI\%Lutseslav\fP, \fI\%The\-Loeki\fP, \fI\%Vaelatern\fP, \fI\%admd\fP, \fI\%aesposito91\fP, \fI\%asenci\fP, \fI\%astorath\fP, \fI\%azelezni\fP, \fI\%babs\fP, \fI\%bbczeuz\fP, \fI\%bbinet\fP, \fI\%brejoc\fP, \fI\%cro\fP, \fI\%daa\fP, \fI\%dmurphy18\fP, \fI\%dubb\-b\fP, \fI\%dwoz\fP, \fI\%eliasp\fP, \fI\%ezh\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jeduardo\fP, \fI\%kt97679\fP, \fI\%kuetrzi\fP, \fI\%linoplt\fP, \fI\%lomeroe\fP, \fI\%lusche\fP, \fI\%mateiw\fP, \fI\%max\-arnold\fP, \fI\%maxim\-sermin\fP, \fI\%meaksh\fP, \fI\%mmulqueen\fP, \fI\%morganwillcock\fP, \fI\%mtorromeo\fP, \fI\%nullify005\fP, \fI\%paulcollinsiii\fP, \fI\%pritambaral\fP, \fI\%rallytime\fP, \fI\%rares\-pop\fP, \fI\%rmarchei\fP, \fI\%rosscdh\fP, \fI\%sizgiyaev\fP, \fI\%sjorge\fP, \fI\%t0fik\fP, \fI\%terminalmage\fP, \fI\%travispaul\fP, \fI\%twangboy\fP, \fI\%vinian\fP, \fI\%weswhet\fP, \fI\%zerthimon\fP) +Contributors: \fB55\fP (\fI\%Ch3LL\fP, \fI\%FedericoCeratto\fP, \fI\%KaiSforza\fP, \fI\%L4rS6\fP, \fI\%Lutseslav\fP, +\fI\%The\-Loeki\fP, \fI\%Vaelatern\fP, \fI\%admd\fP, \fI\%aesposito91\fP, \fI\%asenci\fP, \fI\%astorath\fP, \fI\%azelezni\fP, +\fI\%babs\fP, \fI\%bbczeuz\fP, \fI\%bbinet\fP, \fI\%brejoc\fP, \fI\%cro\fP, \fI\%daa\fP, \fI\%dmurphy18\fP, \fI\%dubb\-b\fP, \fI\%dwoz\fP, +\fI\%eliasp\fP, \fI\%ezh\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jeduardo\fP, \fI\%kt97679\fP, +\fI\%kuetrzi\fP, \fI\%linoplt\fP, \fI\%lomeroe\fP, \fI\%lusche\fP, \fI\%mateiw\fP, \fI\%max\-arnold\fP, \fI\%maxim\-sermin\fP, +\fI\%meaksh\fP, \fI\%mmulqueen\fP, \fI\%morganwillcock\fP, \fI\%mtorromeo\fP, \fI\%nullify005\fP, \fI\%paulcollinsiii\fP, +\fI\%pritambaral\fP, \fI\%rallytime\fP, \fI\%rares\-pop\fP, \fI\%rmarchei\fP, \fI\%rosscdh\fP, \fI\%sizgiyaev\fP, \fI\%sjorge\fP, +\fI\%t0fik\fP, \fI\%terminalmage\fP, \fI\%travispaul\fP, \fI\%twangboy\fP, \fI\%vinian\fP, \fI\%weswhet\fP, \fI\%zerthimon\fP) .UNINDENT .sp \fBWARNING:\fP @@ -488064,7 +489851,7 @@ f40b966d99 decode file contents for python2 as well .IP \(bu 2 abd7f1312d Merge pull request \fI\%#48928\fP from Ch3LL/mac_runas .IP \(bu 2 -3d6455dbcd remove unecessary comment in setup +3d6455dbcd remove unnecessary comment in setup .IP \(bu 2 8e30db0217 move destructivetest to testname .IP \(bu 2 @@ -488215,13 +490002,13 @@ fb7885315c Wrap ElementTree.tostring to make strs, not bytes .IP \(bu 2 \fBISSUE\fP \fI\%#37512\fP: (\fI\%ChristianBeer\fP) What\(aqs the precedence if multiple master configurations are specified? (refs: \fI\%#48888\fP) .IP \(bu 2 -\fBPR\fP \fI\%#48888\fP: (\fI\%terminalmage\fP) Explictly document the configuration override priority +\fBPR\fP \fI\%#48888\fP: (\fI\%terminalmage\fP) Explicitly document the configuration override priority @ \fI2018\-08\-02 16:57:18 UTC\fP .INDENT 2.0 .IP \(bu 2 ec8e07e8ce Merge pull request \fI\%#48888\fP from terminalmage/issue37512 .IP \(bu 2 -7dce7cde14 Explictly document the configuration override priority +7dce7cde14 Explicitly document the configuration override priority .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#48871\fP: (\fI\%dwoz\fP) Remove unicode key pairs from environ after test @@ -488268,7 +490055,7 @@ a8376b537a Merge pull request \fI\%#48855\fP from rallytime/merge\-2018.3 8a1285239a Merge pull request \fI\%#48426\fP from garethgreenaway/46689_fixing_pkg_held_when_package_is_installed .INDENT 2.0 .IP \(bu 2 -9b0f5dd212 Fixing identation, removing some unnecessary conditionals. +9b0f5dd212 Fixing indentation, removing some unnecessary conditionals. .IP \(bu 2 727964ab55 One last cleanup. .IP \(bu 2 @@ -488476,7 +490263,7 @@ b6f73e8e57 Remove trailing whitespace on what should be a blank line .IP \(bu 2 95329acb1e Fileserver transfers bytes .IP \(bu 2 -aa34a80997 Always trasfer bytes from fileserver roots +aa34a80997 Always transfer bytes from fileserver roots .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#48822\fP: (\fI\%Ch3LL\fP) Fix salt\-ssh state.sls_id TypeError key must be a string @@ -488712,7 +490499,7 @@ e740d3b208 Merge branch \(aq2017.7\(aq into \(aq2018.3\(aq 83e4bba916 Merge pull request \fI\%#48635\fP from nbraud/acme .INDENT 2.0 .IP \(bu 2 -3673bae9de modules/acme: explicitely ignore the \fIperms\fP return value +3673bae9de modules/acme: explicitly ignore the \fIperms\fP return value .IP \(bu 2 1800a231e8 Fixup some schema expectations .IP \(bu 2 @@ -488860,9 +490647,9 @@ cb654bbf2c Add timeouts to all s3 queries 1b6e6388f8 Merge pull request \fI\%#48588\fP from garethgreenaway/48415_event_send_multi_master .INDENT 2.0 .IP \(bu 2 -fab25af1a9 Adding some quick documention about why we are setting ret=True following the channel.send. +fab25af1a9 Adding some quick documentation about why we are setting ret=True following the channel.send. .IP \(bu 2 -bf78f4b188 If the channel send is sucessful and does not raise an exception, we set ret to True, in case a previous exception from a previous channel send to another master has sent it to False. +bf78f4b188 If the channel send is successful and does not raise an exception, we set ret to True, in case a previous exception from a previous channel send to another master has sent it to False. .IP \(bu 2 8d1551c5fb When using Salt multi\-master, if we encouter a salt master that has not accepted the minion key yet we should not exit right away, rather continue on and try the next salt master available in the list. .UNINDENT @@ -489895,7 +491682,7 @@ b965d6c9b3 If pip binary is passed to bin_env, use that pip binary 06a927b2aa Merge pull request \fI\%#48293\fP from rallytime/bp\-47453 .INDENT 2.0 .IP \(bu 2 -e96ab6778e dont reset system locale when running rabbitmqctl commands +e96ab6778e don\(aqt reset system locale when running rabbitmqctl commands .UNINDENT .UNINDENT .IP \(bu 2 @@ -489942,7 +491729,7 @@ d63cf3f072 Fixes another case of legacy configuration key usage warning getting 83d7d286c4 Merge pull request \fI\%#48080\fP from lusche/2017.7 .INDENT 2.0 .IP \(bu 2 -917dc985fc \fI\%#47984\fP remove the line completly +917dc985fc \fI\%#47984\fP remove the line completely .IP \(bu 2 ba12ee947b Merge branch \(aq2017.7\(aq of \fI\%https://github.com/saltstack/salt\fP into 2017.7 .IP \(bu 2 @@ -490555,7 +492342,7 @@ e594979745 Add a .jenkins file to run pylint a040643a82 Accounting for certain situations when the query result is not a string, but actually a dictionary. .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#48113\fP: (\fI\%gaetanquentin\fP) state file.line has error and erase file content completly, while with mode test=true it is ok (refs: \fI\%#48156\fP) +\fBISSUE\fP \fI\%#48113\fP: (\fI\%gaetanquentin\fP) state file.line has error and erase file content completely, while with mode test=true it is ok (refs: \fI\%#48156\fP) .IP \(bu 2 \fBPR\fP \fI\%#48156\fP: (\fI\%garethgreenaway\fP) [2018.3] Unicode fixes for file.line @ \fI2018\-06\-17 19:34:08 UTC\fP @@ -491623,7 +493410,7 @@ c328450be2 Update old utils paths to new paths 0e87559ee3 Merge pull request \fI\%#47781\fP from rallytime/update\-linode\-sizes .INDENT 2.0 .IP \(bu 2 -a90c1b760e Update cloud test profile and docs to use new Linode size lables +a90c1b760e Update cloud test profile and docs to use new Linode size labels .UNINDENT .IP \(bu 2 3ddc56cb9b Merge pull request \fI\%#47748\fP from rallytime/merge\-2017.7 @@ -492380,7 +494167,7 @@ d22ed7dffa added handling for the aws error ConflictingDomainExists 7f53be6e92 Merge pull request \fI\%#47444\fP from terminalmage/render_state\-spurious\-error .INDENT 2.0 .IP \(bu 2 -a1e9fe00fd Skip trying to render a template for a nonexistant SLS file +a1e9fe00fd Skip trying to render a template for a nonexistent SLS file .UNINDENT .IP \(bu 2 50b9c4d79d Merge pull request \fI\%#47478\fP from terminalmage/rename\-pip\-state\-test @@ -492489,7 +494276,18 @@ Total Issue References: \fB111\fP .IP \(bu 2 Total PR References: \fB412\fP .IP \(bu 2 -Contributors: \fB76\fP (\fI\%5uper5hoot\fP, \fI\%Ch3LL\fP, \fI\%ClaudiuPID\fP, \fI\%Giandom\fP, \fI\%KaiSforza\fP, \fI\%MTecknology\fP, \fI\%ManicoW\fP, \fI\%OrangeDog\fP, \fI\%ShantonRU\fP, \fI\%The\-Loeki\fP, \fI\%Yxnt\fP, \fI\%aarnaud\fP, \fI\%amendlik\fP, \fI\%angeloudy\fP, \fI\%bartlaarhoven\fP, \fI\%bbh\-kmd\fP, \fI\%bbinet\fP, \fI\%bdrung\fP, \fI\%bergmannf\fP, \fI\%bluesliverx\fP, \fI\%bornwitbugs\fP, \fI\%brejoc\fP, \fI\%cachedout\fP, \fI\%casselt\fP, \fI\%cro\fP, \fI\%cstarke\fP, \fI\%dgmorrisjr\fP, \fI\%dmurphy18\fP, \fI\%dubb\-b\fP, \fI\%dwoz\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jacobweinstock\fP, \fI\%jgleissner\fP, \fI\%jodok\fP, \fI\%jpsv\fP, \fI\%jyurdal\fP, \fI\%kiemlicz\fP, \fI\%kunal\-bajpai\fP, \fI\%lexvella\fP, \fI\%lomeroe\fP, \fI\%m03\fP, \fI\%madrisan\fP, \fI\%mat813\fP, \fI\%mattp\-\fP, \fI\%max\-arnold\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%michaelgibson\fP, \fI\%nhavens\fP, \fI\%pirogoeth\fP, \fI\%rallytime\fP, \fI\%rkrieger\fP, \fI\%rmarcinik\fP, \fI\%rongzeng54\fP, \fI\%rwaweber\fP, \fI\%s0undt3ch\fP, \fI\%sathieu\fP, \fI\%sheagcraig\fP, \fI\%silenius\fP, \fI\%sunyq\fP, \fI\%t0fik\fP, \fI\%terminalmage\fP, \fI\%terrible\-broom\fP, \fI\%thebluesnevrdie\fP, \fI\%thetaurean\fP, \fI\%tlemarchand\fP, \fI\%tonybaloney\fP, \fI\%twangboy\fP, \fI\%waynew\fP, \fI\%weswhet\fP, \fI\%whytewolf\fP, \fI\%yosnoop\fP, \fI\%zwo\-bot\fP) +Contributors: \fB76\fP (\fI\%5uper5hoot\fP, \fI\%Ch3LL\fP, \fI\%ClaudiuPID\fP, \fI\%Giandom\fP, \fI\%KaiSforza\fP, +\fI\%MTecknology\fP, \fI\%ManicoW\fP, \fI\%OrangeDog\fP, \fI\%ShantonRU\fP, \fI\%The\-Loeki\fP, \fI\%Yxnt\fP, \fI\%aarnaud\fP, +\fI\%amendlik\fP, \fI\%angeloudy\fP, \fI\%bartlaarhoven\fP, \fI\%bbh\-kmd\fP, \fI\%bbinet\fP, \fI\%bdrung\fP, \fI\%bergmannf\fP, +\fI\%bluesliverx\fP, \fI\%bornwitbugs\fP, \fI\%brejoc\fP, \fI\%cachedout\fP, \fI\%casselt\fP, \fI\%cro\fP, \fI\%cstarke\fP, +\fI\%dgmorrisjr\fP, \fI\%dmurphy18\fP, \fI\%dubb\-b\fP, \fI\%dwoz\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, +\fI\%isbm\fP, \fI\%jacobweinstock\fP, \fI\%jgleissner\fP, \fI\%jodok\fP, \fI\%jpsv\fP, \fI\%jyurdal\fP, \fI\%kiemlicz\fP, +\fI\%kunal\-bajpai\fP, \fI\%lexvella\fP, \fI\%lomeroe\fP, \fI\%m03\fP, \fI\%madrisan\fP, \fI\%mat813\fP, \fI\%mattp\-\fP, +\fI\%max\-arnold\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%michaelgibson\fP, \fI\%nhavens\fP, \fI\%pirogoeth\fP, \fI\%rallytime\fP, +\fI\%rkrieger\fP, \fI\%rmarcinik\fP, \fI\%rongzeng54\fP, \fI\%rwaweber\fP, \fI\%s0undt3ch\fP, \fI\%sathieu\fP, \fI\%sheagcraig\fP, +\fI\%silenius\fP, \fI\%sunyq\fP, \fI\%t0fik\fP, \fI\%terminalmage\fP, \fI\%terrible\-broom\fP, \fI\%thebluesnevrdie\fP, +\fI\%thetaurean\fP, \fI\%tlemarchand\fP, \fI\%tonybaloney\fP, \fI\%twangboy\fP, \fI\%waynew\fP, \fI\%weswhet\fP, \fI\%whytewolf\fP, +\fI\%yosnoop\fP, \fI\%zwo\-bot\fP) .UNINDENT .SS Changelog for v2018.3.3..v2018.3.4 .sp @@ -493050,7 +494848,9 @@ fad8621 Merge pull request \fI\%#51154\fP from twangboy/auditpol .IP \(bu 2 f7a100c Merge pull request \fI\%#51151\fP from Ch3LL/bp_51061 .IP \(bu 2 -ffdae27 When writing output to stdout we want to ensure that the data is a string not bytes. Under py2 the salt.utils.data.encode function results in a string but under py3 the result is a bytestring. Swapping out salt.utils.data.encode for salt.utils.stringutils.to_str. +ffdae27 When writing output to stdout we want to ensure that the data is a string not bytes. +Under py2 the salt.utils.data.encode function results in a string but under py3 the result is a +bytestring. Swapping out salt.utils.data.encode for salt.utils.stringutils.to_str. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#51150\fP: (\fI\%Ch3LL\fP) Back\-port \fI\%#49508\fP to 2018.3 @@ -493080,7 +494880,9 @@ f7caa4d Fixing lint .IP \(bu 2 e8c8c0f Adding some tests to ensure "ALL PRIVILEGES" is handled correctly in 8.0 and 5.6 .IP \(bu 2 -b4bfd9f Add additional grants. Adding logic to handle when ALL or ALL PRIVILEGES is passed for the grant, including some logic to handle the fact that the grants are split when show grants is run for a particular user. +b4bfd9f Add additional grants. Adding logic to handle when ALL or ALL PRIVILEGES is passed for +the grant, including some logic to handle the fact that the grants are split when show grants +is run for a particular user. .INDENT 2.0 .IP \(bu 2 74edfd9 Fix pylint @@ -493992,13 +495794,16 @@ d46aff0 Merge branch 2017.7 into 2018.3 1236b51 Merge pull request \fI\%#50659\fP from garethgreenaway/49954_gem_installed_less_than_greater_than_support .INDENT 2.0 .IP \(bu 2 -0ec8bcf When using the gem installed state, when passing a version that includes greater than or less than symbols, ensure that the installed versions meets that requirement. +0ec8bcf When using the gem installed state, when passing a version that includes greater +than or less than symbols, ensure that the installed versions meets that requirement. .UNINDENT .IP \(bu 2 6317f3a Merge pull request \fI\%#50583\fP from damon\-atkins/jenkins_pylint .INDENT 2.0 .IP \(bu 2 -2d1f51c Fix lint only changes, full lint on merge forwards \- lint only changes previous diff picked up out of data files, when the branch was out of date. \- full limit on merge forward to pick up changes in the lint checks between versions. \- update CODEOWNERS for .ci/* +2d1f51c Fix lint only changes, full lint on merge forwards \- lint only changes previous diff +picked up out of data files, when the branch was out of date. \- full limit on merge forward +to pick up changes in the lint checks between versions. \- update CODEOWNERS for .ci/* .UNINDENT .IP \(bu 2 15bf09a Merge pull request \fI\%#50605\fP from Oloremo/fix\-supervisord\-dead\-state\-idempotency @@ -494057,7 +495862,8 @@ d1c2038 Add generic ip address validation function .IP \(bu 2 b604785 Merge pull request \fI\%#50683\fP from garethgreenaway/48759_adding_aliases_include_expand .IP \(bu 2 -3940a0f When adding alises to an existing Certbot certificate, if we see a message about expanding in the stderr returned from cmd.run_all we should rerun the cmd with \-\-expand included. +3940a0f When adding alises to an existing Certbot certificate, if we see a message about +expanding in the stderr returned from cmd.run_all we should rerun the cmd with \-\-expand included. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#50406\fP: (\fI\%glkappe\fP) salt\-ssh can\(aqt use Mongo returner (refs: \fI\%#50664\fP) @@ -494068,7 +495874,9 @@ b604785 Merge pull request \fI\%#50683\fP from garethgreenaway/48759_adding_alia .IP \(bu 2 15f9ae4 Merge pull request \fI\%#50664\fP from garethgreenaway/50406_salt_ssh_returner_configuration .IP \(bu 2 -3525411 When pulling values out of the available configuration for returners we should always default to using keys for those returners, eg. mongo.user for the username. Otherwise in certain situations, eg. when using salt\-ssh we will end up with the wrong value for the user. +3525411 When pulling values out of the available configuration for returners we should always +default to using keys for those returners, eg. mongo.user for the username. Otherwise in +certain situations, eg. when using salt\-ssh we will end up with the wrong value for the user. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#50652\fP: (\fI\%twangboy\fP) Fix \fIunit.utils.test_mac_utils\fP on Windows @@ -494113,7 +495921,11 @@ a289e3c Merge branch \(aq2017.7\(aq into zmqpubserv 6679242 Merge pull request \fI\%#50590\fP from garethgreenaway/bp\-50333 .INDENT 2.0 .IP \(bu 2 -1f5aa4b pkg.installed currently fails when sources is used along with hold: True. This was due to a change in \fI\%#48426\fP that swapped out sending the pkgs variable for the desired variable instead. This caused problems with pkg.hold because desired and sources are always populated, and pkg.hold can only include one or the other. This change just includes desired in the call to pkg.hold since desired has the same value for sources. +1f5aa4b pkg.installed currently fails when sources is used along with hold: True. +This was due to a change in \fI\%#48426\fP that swapped out sending the pkgs variable for the +desired variable instead. This caused problems with pkg.hold because desired and sources +are always populated, and pkg.hold can only include one or the other. This change just +includes desired in the call to pkg.hold since desired has the same value for sources. .INDENT 2.0 .IP \(bu 2 39e811b Add issue url to tests @@ -494156,7 +495968,10 @@ c2ed1d4 Adding some logging when the cache files are unable to be removed. .IP \(bu 2 722be43 Fixing lint .IP \(bu 2 -65b4421 Adding some master specific functions to uitls/masters.py to determine if a Salt process is running. Updating utils/schedule.py to use the appropriate running function either from utils/master.py or utils/minion.py depending on where the scheduled job is running. Adding tests to test maxrunning in scheduled jobs for both the minion and master. +65b4421 Adding some master specific functions to uitls/masters.py to determine if a Salt +process is running. Updating utils/schedule.py to use the appropriate running function either +from utils/master.py or utils/minion.py depending on where the scheduled job is running. Adding +tests to test maxrunning in scheduled jobs for both the minion and master. .IP \(bu 2 0d65304 Swapping manual mocking to autodoc_mock_imports .UNINDENT @@ -494177,7 +495992,8 @@ eb510a6 Merge branch \(aq2018.3\(aq into 50542_mysql_ensure_verify_login_uses_co .IP \(bu 2 db89b27 Merge branch \(aq2018.3\(aq into 50542_mysql_ensure_verify_login_uses_connection_host .IP \(bu 2 -0284323 Ensure that verify_login is using the host from the connection_args and not the host associated with the user. Adding a test to ensure user_exists when the passed host is the MySQL wildcard %. +0284323 Ensure that verify_login is using the host from the connection_args and not the host associated with the user. +Adding a test to ensure user_exists when the passed host is the MySQL wildcard %. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#50619\fP: (\fI\%s0undt3ch\fP) Don\(aqt squash tracebacks and Unicode fixes @@ -494250,7 +496066,7 @@ db15776 Remove overline from section title .IP \(bu 2 60b4622 Merge pull request \fI\%#50366\fP from jdsieci/2018.3\-fix\-issue50254 .IP \(bu 2 -a9b9fa2 Fixed pylint warnigs +a9b9fa2 Fixed pylint warnings .IP \(bu 2 342786b Issue \fI\%#50254\fP fixed .IP \(bu 2 @@ -494370,7 +496186,10 @@ fbee11d Enable proxy/ssh daemons when filename mapping causes those tests to be .IP \(bu 2 4f30611 lint .IP \(bu 2 -4f9eb95 Fixing a typo in the _virtual function, should be checking for existing grains in osdata not grains. Updating the detection to look for /sys/bus/xen/drivers/xenconsole instead of specifically looking for any files under /sys/bus/xen/drivers. Some systems that are not running as Xen PV hosts include files under that location, particular Oracle Linux. +4f9eb95 Fixing a typo in the _virtual function, should be checking for existing grains in +osdata not grains. Updating the detection to look for /sys/bus/xen/drivers/xenconsole instead +of specifically looking for any files under /sys/bus/xen/drivers. Some systems that are not +running as Xen PV hosts include files under that location, particular Oracle Linux. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#50224\fP: (\fI\%mruepp\fP) Augeas changes state with setm not working (refs: \fI\%#50526\fP) @@ -494673,10 +496492,11 @@ cca7a36 Merge pull request \fI\%#50441\fP from rallytime/replace\-docbanner .IP \(bu 2 3aaad17 Merge pull request \fI\%#50468\fP from garethgreenaway/50461_fix_elementary_os_family_grain .IP \(bu 2 -77e8dcc On later versions of elementary, the os_family is being populated as elementary. In order for the aptpkg module to function, we need to override is to be Debian. +77e8dcc On later versions of elementary, the os_family is being populated as elementary. +In order for the aptpkg module to function, we need to override is to be Debian. .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#50311\fP: (\fI\%marek\-obuchowicz\fP) pkg.installed state fails even though it suceeded (refs: \fI\%#50590\fP, \fI\%#50333\fP) +\fBISSUE\fP \fI\%#50311\fP: (\fI\%marek\-obuchowicz\fP) pkg.installed state fails even though it succeeded (refs: \fI\%#50590\fP, \fI\%#50333\fP) .IP \(bu 2 \fBISSUE\fP \fI\%#46689\fP: (\fI\%mxork\fP) pkg.installed: hold: True not applied to a package which is already installed. (refs: \fI\%#48426\fP) .IP \(bu 2 @@ -494690,7 +496510,11 @@ d9179fb Merge pull request \fI\%#50333\fP from garethgreenaway/50311_pkg_install .IP \(bu 2 7bc9b3d Merge branch \(aq2018.3\(aq into 50311_pkg_installed_fails_sources_hold .IP \(bu 2 -6e96728 pkg.installed currently fails when sources is used along with hold: True. This was due to a change in \fI\%#48426\fP that swapped out sending the pkgs variable for the desired variable instead. This caused problems with pkg.hold because desired and sources are always populated, and pkg.hold can only include one or the other. This change just includes desired in the call to pkg.hold since desired has the same value for sources. +6e96728 pkg.installed currently fails when sources is used along with hold: True. This was due +to a change in \fI\%#48426\fP that swapped out sending the pkgs variable for the desired variable +instead. This caused problems with pkg.hold because desired and sources are always populated, +and pkg.hold can only include one or the other. This change just includes desired in the call +to pkg.hold since desired has the same value for sources. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#50434\fP: (\fI\%rallytime\fP) [2018.3] Merge forward from 2017.7 to 2018.3 @@ -495423,7 +497247,7 @@ d45f6c7 Add empty token salt\-api integration tests f28a4fa Merge pull request \fI\%#50211\fP from channias/fix\-spm\-modules\-install .INDENT 2.0 .IP \(bu 2 -9b203d5 Fix broken install of additionnal modules in SPM packages +9b203d5 Fix broken install of additional modules in SPM packages .UNINDENT .IP \(bu 2 6b4e07b Merge pull request \fI\%#50212\fP from dwoz/test_no_fail @@ -495478,7 +497302,11 @@ fe2d70d [DOC] Fix JSON payload example in HTTP tutorial .IP \(bu 2 51b3fa4 Merge pull request \fI\%#50216\fP from garethgreenaway/50162_when_plus_splay_endless_loop .IP \(bu 2 -685509f Fixing an issue when a combination of the when parameter as a list plus using the splay parameter would cause the schedule to continuously run jobs in an endless loop, regardless of if their scheduled time had been receached. Also fixing a related issue where scheduled jobs that rely on _next_fire_time were not being run as the corrected splayed time but rather running at the original scheduled time. Adding new tests. +685509f Fixing an issue when a combination of the when parameter as a list plus using the splay +parameter would cause the schedule to continuously run jobs in an endless loop, regardless of +if their scheduled time had been receached. Also fixing a related issue where scheduled jobs +that rely on _next_fire_time were not being run as the corrected splayed time but rather +running at the original scheduled time. Adding new tests. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#50190\fP: (\fI\%dwoz\fP) Fix test_managed_file_with_grains_data on Windows @@ -495902,14 +497730,15 @@ c2a46ce Merge pull request \fI\%#50066\fP from garethgreenaway/49988_redact_pass ab2cb51 Merge pull request \fI\%#50068\fP from garethgreenaway/1140_mac_system_tests_2018_3_failing .IP \(bu 2 eedeacb Updating another reference to salt.utils.mac_utils to use __utils__ -.INDENT 2.0 -.INDENT 3.5 -.INDENT 0.0 .IP \(bu 2 -6ef5ce4 Due to a previous PR the test_sdb_runner in sdb.test_vault was failing because of a exception that was being swallowed in the test run_run function. The cause was that when vault related functions were being run, if they were being run on the master then they were being forced to run through the _get_token_and_url_from_master() function, which is pull the id element out of the grains dictionary. When the call was taking place from a runner, the exception was popping up since there is no id when called from a runner. This fix checks to see if the id exists in the dictionary first, if it is there then _get_token_and_url_from_master() is called, otherwise _use_local_config is called. -.UNINDENT -.UNINDENT -.UNINDENT +6ef5ce4 Due to a previous PR the test_sdb_runner in sdb.test_vault was failing because of a +exception that was being swallowed in the test run_run function. The cause was that when vault +related functions were being run, if they were being run on the master then they were being +forced to run through the _get_token_and_url_from_master() function, which is pull the id +element out of the grains dictionary. When the call was taking place from a runner, the +exception was popping up since there is no id when called from a runner. This fix checks to see +if the id exists in the dictionary first, if it is there then _get_token_and_url_from_master() +is called, otherwise _use_local_config is called. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#49987\fP: (\fI\%terminalmage\fP) Make Pillar no longer munge file_roots @@ -496330,7 +498159,7 @@ a248371 Get os_family for RPM distros from the RPM macros. .IP \(bu 2 eee82d3 Merge pull request \fI\%#49875\fP from dwoz/win_spm_tests .IP \(bu 2 -e76a751 Use os.path.split for more consistancy +e76a751 Use os.path.split for more consistency .IP \(bu 2 bc54d15 Fix wart in spm on windows .IP \(bu 2 @@ -496411,7 +498240,7 @@ f3999e1 Move vagrant to its own group .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 -19072f0 Use os.path.split for more consistancy +19072f0 Use os.path.split for more consistency .IP \(bu 2 6c22459 Merge remote\-tracking branch \(aqorigin/shelltests\(aq into shelltests .INDENT 2.0 @@ -496579,13 +498408,13 @@ c88a81d Actually catch the exception when we fail @ \fI2018\-10\-01 20:05:24 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#49827\fP: (\fI\%dgmorrisjr\fP) fixing mis\-spelling of lattrs in file.py, referncing \fI\%#49204\fP (refs: \fI\%#49846\fP) +\fBPR\fP \fI\%#49827\fP: (\fI\%dgmorrisjr\fP) fixing mis\-spelling of lattrs in file.py, referencing \fI\%#49204\fP (refs: \fI\%#49846\fP) .IP \(bu 2 \fBPR\fP \fI\%#49650\fP: (\fI\%Yxnt\fP) fix aliyun cloud typeerror (refs: \fI\%#49846\fP) .IP \(bu 2 93d064a Merge pull request \fI\%#49846\fP from rallytime/bp\-49650 .IP \(bu 2 -fb7fed7 referncing \fI\%#49204\fP, fixing mis\-spelling of lattrs on line 4514 per request from @gtmanfred +fb7fed7 referencing \fI\%#49204\fP, fixing mis\-spelling of lattrs on line 4514 per request from @gtmanfred .IP \(bu 2 ec9fa92 use stringutils instead of hard code .IP \(bu 2 @@ -496608,7 +498437,7 @@ ec97806 Merge pull request \fI\%#49764\fP from garethgreenaway/49520_multimaster .IP \(bu 2 44ee2ec Updating default for retry_dns_count .IP \(bu 2 -75f64a6 Removing unneccesary code. +75f64a6 Removing unnecessary code. .IP \(bu 2 e66dc18 Updating the resolve_dns function in minion.py to include a new minion configuration option which will control how many attempts will be made when the master hostname is unable to be resolved before giving up. .UNINDENT @@ -496921,7 +498750,7 @@ bb9cb6e Fix wrong queryformat for zypper list_provides d40c034 Fix index error when running on Python 3 .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#49720\fP: (\fI\%cstarke\fP) Seperate prlctl and prlsrvctl checks into each requiring function +\fBPR\fP \fI\%#49720\fP: (\fI\%cstarke\fP) Separate prlctl and prlsrvctl checks into each requiring function @ \fI2018\-09\-21 13:32:46 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -496935,7 +498764,7 @@ b0be6aa Add documentation for prlctl and prlsrvctl binary requirement .IP \(bu 2 9034c4e Add import for CommandExecutionError .IP \(bu 2 -752b6f8 Seperate prlctl and prlsrvctl checks into each requiring function +752b6f8 Separate prlctl and prlsrvctl checks into each requiring function .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#49615\fP: (\fI\%terminalmage\fP) ping_interval: use service.restart instead of signaling @@ -499933,7 +501762,8 @@ Total Issue References: \fB12\fP .IP \(bu 2 Total PR References: \fB31\fP .IP \(bu 2 -Contributors: \fB11\fP (\fI\%Ch3LL\fP, \fI\%TiteiKo\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%llua\fP, \fI\%rallytime\fP, \fI\%seedickcode\fP, \fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) +Contributors: \fB11\fP (\fI\%Ch3LL\fP, \fI\%TiteiKo\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%llua\fP, +\fI\%rallytime\fP, \fI\%seedickcode\fP, \fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) .UNINDENT .SS Security Fix .sp @@ -500169,7 +501999,14 @@ Total Issue References: \fB73\fP .IP \(bu 2 Total PR References: \fB236\fP .IP \(bu 2 -Contributors: \fB47\fP (\fI\%Ch3LL\fP, \fI\%CorvinM\fP, \fI\%DmitryKuzmenko\fP, \fI\%Giandom\fP, \fI\%Mapel88\fP, \fI\%Mareo\fP, \fI\%SuperPommeDeTerre\fP, \fI\%The\-Loeki\fP, \fI\%abulford\fP, \fI\%amendlik\fP, \fI\%blarghmatey\fP, \fI\%brejoc\fP, \fI\%cachedout\fP, \fI\%carsonoid\fP, \fI\%cro\fP, \fI\%damon\-atkins\fP, \fI\%darcoli\fP, \fI\%dmurphy18\fP, \fI\%frankiexyz\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%hibbert\fP, \fI\%isbm\fP, \fI\%ixs\fP, \fI\%jettero\fP, \fI\%jmarinaro\fP, \fI\%justincbeard\fP, \fI\%kkoppel\fP, \fI\%llua\fP, \fI\%lomeroe\fP, \fI\%m03\fP, \fI\%mcalmer\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%nhavens\fP, \fI\%pabloh007\fP, \fI\%rallytime\fP, \fI\%seedickcode\fP, \fI\%shengis\fP, \fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%the\-glu\fP, \fI\%thusoy\fP, \fI\%twangboy\fP, \fI\%vitaliyf\fP, \fI\%vutny\fP, \fI\%whiteinge\fP) +Contributors: \fB47\fP (\fI\%Ch3LL\fP, \fI\%CorvinM\fP, \fI\%DmitryKuzmenko\fP, \fI\%Giandom\fP, \fI\%Mapel88\fP, \fI\%Mareo\fP, +\fI\%SuperPommeDeTerre\fP, \fI\%The\-Loeki\fP, \fI\%abulford\fP, \fI\%amendlik\fP, \fI\%blarghmatey\fP, \fI\%brejoc\fP, +\fI\%cachedout\fP, \fI\%carsonoid\fP, \fI\%cro\fP, \fI\%damon\-atkins\fP, \fI\%darcoli\fP, \fI\%dmurphy18\fP, \fI\%frankiexyz\fP, +\fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%hibbert\fP, \fI\%isbm\fP, \fI\%ixs\fP, \fI\%jettero\fP, \fI\%jmarinaro\fP, +\fI\%justincbeard\fP, \fI\%kkoppel\fP, \fI\%llua\fP, \fI\%lomeroe\fP, \fI\%m03\fP, \fI\%mcalmer\fP, \fI\%mirceaulinic\fP, +\fI\%morganwillcock\fP, \fI\%nhavens\fP, \fI\%pabloh007\fP, \fI\%rallytime\fP, \fI\%seedickcode\fP, \fI\%shengis\fP, +\fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%the\-glu\fP, \fI\%thusoy\fP, \fI\%twangboy\fP, \fI\%vitaliyf\fP, \fI\%vutny\fP, +\fI\%whiteinge\fP) .UNINDENT .SS Security Fix .sp @@ -501323,7 +503160,7 @@ b9f4f87aa5 Merge pull request \fI\%#42798\fP from s\-sebastian/2016.11 .UNINDENT .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#42842\fP: (\fI\%Giandom\fP) retreive kwargs passed with slack engine (refs: \fI\%#42884\fP) +\fBISSUE\fP \fI\%#42842\fP: (\fI\%Giandom\fP) retrieve kwargs passed with slack engine (refs: \fI\%#42884\fP) .IP \(bu 2 \fBPR\fP \fI\%#42884\fP: (\fI\%Giandom\fP) Convert to dict type the pillar string value passed from slack @ \fI2017\-08\-16 22:30:43 UTC\fP @@ -501688,13 +503525,13 @@ d8f7d7a7c0 API changes for Kubernetes version 2.0.0 .IP \(bu 2 \fBISSUE\fP \fI\%saltstack/salt\-jenkins#480\fP: (\fI\%rallytime\fP) [2017.7] PY3 Debian 8 has several vmware unit tests failing (refs: \fI\%#42857\fP) .IP \(bu 2 -\fBPR\fP \fI\%#42857\fP: (\fI\%gtmanfred\fP) use older name if _create_unverified_context is unvailable +\fBPR\fP \fI\%#42857\fP: (\fI\%gtmanfred\fP) use older name if _create_unverified_context is unavailable @ \fI2017\-08\-11 13:37:59 UTC\fP .INDENT 2.0 .IP \(bu 2 3d05d89e09 Merge pull request \fI\%#42857\fP from gtmanfred/vmware .IP \(bu 2 -c1f673eca4 use older name if _create_unverified_context is unvailable +c1f673eca4 use older name if _create_unverified_context is unavailable .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#42866\fP: (\fI\%twangboy\fP) Change to GitPython version 2.1.1 @@ -502656,7 +504493,7 @@ c673b64583 Merge branch \(aq2016.11\(aq into \(aq2017.7\(aq 0a72e56f6b Merge pull request \fI\%#42356\fP from meaksh/2016.11\-AliasesLoader\-wrapper\-fix .INDENT 2.0 .IP \(bu 2 -915d94219e Allow to check whether a function is available on the AliasesLoader wrapper +915d94219e Allow checking whether a function is available on the AliasesLoader wrapper .UNINDENT .IP \(bu 2 10eb7b7a79 Merge pull request \fI\%#42368\fP from twangboy/win_fix_build_2016.11 @@ -503381,7 +505218,19 @@ Total Issue References: \fB94\fP .IP \(bu 2 Total PR References: \fB423\fP .IP \(bu 2 -Contributors: \fB86\fP (\fI\%3add3287\fP, \fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%CorvinM\fP, \fI\%Da\-Juan\fP, \fI\%DmitryKuzmenko\fP, \fI\%Giandom\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%adelcast\fP, \fI\%amendlik\fP, \fI\%angeloudy\fP, \fI\%anlutro\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%benediktwerner\fP, \fI\%brejoc\fP, \fI\%cachedout\fP, \fI\%campbellmc\fP, \fI\%chnrxn\fP, \fI\%clan\fP, \fI\%corywright\fP, \fI\%damon\-atkins\fP, \fI\%dincamihai\fP, \fI\%dmurphy18\fP, \fI\%eliasp\fP, \fI\%eradman\fP, \fI\%forksaber\fP, \fI\%frogunder\fP, \fI\%gaborn57\fP, \fI\%garethgreenaway\fP, \fI\%golmaal\fP, \fI\%gracinet\fP, \fI\%gtmanfred\fP, \fI\%haam3r\fP, \fI\%isbm\fP, \fI\%jettero\fP, \fI\%jf\fP, \fI\%jubrad\fP, \fI\%keesbos\fP, \fI\%kris\-anderson\fP, \fI\%lomeroe\fP, \fI\%mateiw\fP, \fI\%mattLLVW\fP, \fI\%mephi42\fP, \fI\%mirceaulinic\fP, \fI\%mkurtak\fP, \fI\%morganwillcock\fP, \fI\%msummers42\fP, \fI\%mtorromeo\fP, \fI\%multani\fP, \fI\%mvivaldi\fP, \fI\%mz\-bmcqueen\fP, \fI\%nasenbaer13\fP, \fI\%nicholasmhughes\fP, \fI\%oarmstrong\fP, \fI\%pkruk\fP, \fI\%pratik705\fP, \fI\%psagers\fP, \fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%rcallphin\fP, \fI\%renner\fP, \fI\%rhoths\fP, \fI\%richardsimko\fP, \fI\%rklaren\fP, \fI\%roaldnefs\fP, \fI\%s0undt3ch\fP, \fI\%samodid\fP, \fI\%skizunov\fP, \fI\%skjaro\fP, \fI\%steverweber\fP, \fI\%sumeetisp\fP, \fI\%t0fik\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%timfreund\fP, \fI\%timka\fP, \fI\%tkwilliams\fP, \fI\%twangboy\fP, \fI\%unthought\fP, \fI\%vernondcole\fP, \fI\%vutny\fP, \fI\%wedge\-jarrad\fP, \fI\%whytewolf\fP, \fI\%xuhcc\fP) +Contributors: \fB86\fP (\fI\%3add3287\fP, \fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%CorvinM\fP, \fI\%Da\-Juan\fP, +\fI\%DmitryKuzmenko\fP, \fI\%Giandom\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%adelcast\fP, \fI\%amendlik\fP, \fI\%angeloudy\fP, +\fI\%anlutro\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%benediktwerner\fP, \fI\%brejoc\fP, \fI\%cachedout\fP, +\fI\%campbellmc\fP, \fI\%chnrxn\fP, \fI\%clan\fP, \fI\%corywright\fP, \fI\%damon\-atkins\fP, \fI\%dincamihai\fP, \fI\%dmurphy18\fP, +\fI\%eliasp\fP, \fI\%eradman\fP, \fI\%forksaber\fP, \fI\%frogunder\fP, \fI\%gaborn57\fP, \fI\%garethgreenaway\fP, \fI\%golmaal\fP, +\fI\%gracinet\fP, \fI\%gtmanfred\fP, \fI\%haam3r\fP, \fI\%isbm\fP, \fI\%jettero\fP, \fI\%jf\fP, \fI\%jubrad\fP, \fI\%keesbos\fP, +\fI\%kris\-anderson\fP, \fI\%lomeroe\fP, \fI\%mateiw\fP, \fI\%mattLLVW\fP, \fI\%mephi42\fP, \fI\%mirceaulinic\fP, \fI\%mkurtak\fP, +\fI\%morganwillcock\fP, \fI\%msummers42\fP, \fI\%mtorromeo\fP, \fI\%multani\fP, \fI\%mvivaldi\fP, \fI\%mz\-bmcqueen\fP, +\fI\%nasenbaer13\fP, \fI\%nicholasmhughes\fP, \fI\%oarmstrong\fP, \fI\%pkruk\fP, \fI\%pratik705\fP, \fI\%psagers\fP, +\fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%rcallphin\fP, \fI\%renner\fP, \fI\%rhoths\fP, \fI\%richardsimko\fP, \fI\%rklaren\fP, +\fI\%roaldnefs\fP, \fI\%s0undt3ch\fP, \fI\%samodid\fP, \fI\%skizunov\fP, \fI\%skjaro\fP, \fI\%steverweber\fP, \fI\%sumeetisp\fP, +\fI\%t0fik\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%timfreund\fP, \fI\%timka\fP, \fI\%tkwilliams\fP, \fI\%twangboy\fP, +\fI\%unthought\fP, \fI\%vernondcole\fP, \fI\%vutny\fP, \fI\%wedge\-jarrad\fP, \fI\%whytewolf\fP, \fI\%xuhcc\fP) .UNINDENT .SS Windows Changes .SS \fBpkg\fP Execution Module\(ga @@ -503502,7 +505351,7 @@ d31b41adeb Update man pages for 2017.7.3 release @ \fI2018\-01\-24 15:33:13 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#45452\fP: (\fI\%adelcast\fP) opkg.py: make owner fuction return value, instead of iterator (refs: \fI\%#45664\fP) +\fBPR\fP \fI\%#45452\fP: (\fI\%adelcast\fP) opkg.py: make owner function return value, instead of iterator (refs: \fI\%#45664\fP) .IP \(bu 2 0717f7a578 Merge pull request \fI\%#45664\fP from rallytime/bp\-45452 .IP \(bu 2 @@ -503886,7 +505735,7 @@ beedf6e815 Merge pull request \fI\%#45351\fP from dmurphy18/upd_debbuild .IP \(bu 2 9a15ec3430 Updating versionadded string. Fixing typo. .IP \(bu 2 -edfc3dc078 Adding in documention for \fIauth_events\fP configuration option +edfc3dc078 Adding in documentation for \fIauth_events\fP configuration option .IP \(bu 2 3ee4eabffd Fixing small typo .IP \(bu 2 @@ -503904,7 +505753,8 @@ edfc3dc078 Adding in documention for \fIauth_events\fP configuration option aeb5f4e248 Add state.running ssh integration test .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%saltstack/salt\-jenkins#675\fP: (\fI\%rallytime\fP) [2017.7] unit.states.test_file.TestFileState.test_directory is failing on Fedora 27 and CentOS 6 (refs: \fI\%#45295\fP) +\fBISSUE\fP \fI\%saltstack/salt\-jenkins#675\fP: (\fI\%rallytime\fP) [2017.7] unit.states.test_file.TestFileState.test_directory +is failing on Fedora 27 and CentOS 6 (refs: \fI\%#45295\fP) .IP \(bu 2 \fBPR\fP \fI\%#45295\fP: (\fI\%gtmanfred\fP) test directory that doesn\(aqt exist @ \fI2018\-01\-08 20:59:53 UTC\fP @@ -504690,11 +506540,18 @@ a4f0b41ba2 Should be a smaller change set since recent update from 2016.11 .IP \(bu 2 4b60b1ec84 Merge remote branch \(aqrefs/remotes/upstream/2017.7\(aq into 2017.7_replace_with_newer_2016.11_win_pkg .IP \(bu 2 -b46f818a57 Raise a PR to fix 2016 issues commited here, fixed issues with merge. +b46f818a57 Raise a PR to fix 2016 issues committed here, fixed issues with merge. .IP \(bu 2 32ef1e12ae Merge branch \(aq2017.7\(aq into 2017.7_replace_with_newer_2016.11_win_pkg .IP \(bu 2 -494835c3f2 I backported develop and applied a long list of fixes to 2016.11 this brings these fixes into 2017.7 \- Software was not always being removed, general if & was in the string or msi was downloaded to uninstall the software \- pkg.list_upgrades failed. Added support for \(aqlatest\(aq and \(aqNot Found\(aq for version_cmp() to fix this. \- output fixes \- pkg.list_available no longer forces a pkg.refresh_db this is no longer required, as by default it will update if older than 6 hours \- cmd /s /c is prefixed for all commands i.e. installs and removes. \- cmd are now strings, instead of a list when using cmd.run. As windows only supports strings. And the " were being broken +494835c3f2 I backported develop and applied a long list of fixes to 2016.11 this brings these +fixes into 2017.7 \- Software was not always being removed, general if & was in the string or +msi was downloaded to uninstall the software \- pkg.list_upgrades failed. Added support for +\(aqlatest\(aq and \(aqNot Found\(aq for version_cmp() to fix this. \- output fixes \- pkg.list_available no +longer forces a pkg.refresh_db this is no longer required, as by default it will update if +older than 6 hours \- cmd /s /c is prefixed for all commands i.e. installs and removes. \- cmd +are now strings, instead of a list when using cmd.run. As windows only supports strings. And +the " were being broken .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#44754\fP: (\fI\%twangboy\fP) Fix inet_pton for Windows on Py3 @@ -505096,7 +506953,7 @@ e9e0318bc6 Backporting fixes related to having beacons in pillar from \fI\%#4407 998d714ee7 Merge pull request \fI\%#44517\fP from whytewolf/publish_port_doc_missing .INDENT 2.0 .IP \(bu 2 -4b5855283a missed one place where i didnt chanbge master_port from my copy to publish_port +4b5855283a missed one place where i didn\(aqt chanbge master_port from my copy to publish_port .IP \(bu 2 e4610baea5 update doc to have publish port .UNINDENT @@ -505296,7 +507153,8 @@ f8b8a8966d Merge pull request \fI\%#44716\fP from rallytime/bp\-44605 .IP \(bu 2 9d43221422 Correct indentation .IP \(bu 2 -d6e28ebed1 Add handling for FreeBSD in method zone_compare to avoid exception when /etc/localtime file does is absent. This is valid configuration on FreeBSD and represents UTC. +d6e28ebed1 Add handling for FreeBSD in method zone_compare to avoid exception when +/etc/localtime file does is absent. This is valid configuration on FreeBSD and represents UTC. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#41869\fP: (\fI\%mirceaulinic\fP) Thorium: unable to execute runners (refs: \fI\%#44781\fP) @@ -505363,9 +507221,9 @@ eefcfc719c use a copy so roster_defaults doesn\(aqt mangle .IP \(bu 2 3bb385b44e removing debugging logging .IP \(bu 2 -7f0ff5a8b0 When passing IDs on the command line convert them all the strings for later comparision. +7f0ff5a8b0 When passing IDs on the command line convert them all the strings for later comparison. .IP \(bu 2 -99e436add4 When looking for job ids to remove based on the tag_name the comparision was comparing an INT to a STR, so the correct job id was not being returned. +99e436add4 When looking for job ids to remove based on the tag_name the comparison was comparing an INT to a STR, so the correct job id was not being returned. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#44136\fP: (\fI\%dupsatou\fP) KeyError: \(aqrunas\(aq after updating to latest salt in yum repo. (refs: \fI\%#44695\fP) @@ -505554,7 +507412,7 @@ cd0bac87e6 Merge branch \(aq2017.7\(aq into improve\-net\-load .IP \(bu 2 88ef9f18fc ignore lint error on import .IP \(bu 2 -25427d845e convert key iterator to list as python 3 wont index an iterator +25427d845e convert key iterator to list as python 3 won\(aqt index an iterator .UNINDENT .IP \(bu 2 bce50154e5 Merge branch \(aq2017.7\(aq into improve\-net\-load @@ -505633,7 +507491,7 @@ c6733ac1ee pop None .UNINDENT .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#44616\fP: (\fI\%Ch3LL\fP) Add Non Base Environement salt:// source integration test +\fBPR\fP \fI\%#44616\fP: (\fI\%Ch3LL\fP) Add Non Base Environment salt:// source integration test @ \fI2017\-11\-22 16:13:54 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -505641,7 +507499,7 @@ d6ccf4bb30 Merge pull request \fI\%#44616\fP from Ch3LL/nonbase_test .IP \(bu 2 80b71652e3 Merge branch \(aq2017.7\(aq into nonbase_test .IP \(bu 2 -c9ba33432e Add Non Base Environement salt:// source integration test +c9ba33432e Add Non Base Environment salt:// source integration test .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#44617\fP: (\fI\%Ch3LL\fP) Add ssh thin_dir integration test @@ -505810,7 +507668,7 @@ a2af3cb857 Include client mixin globals in scheduler for runner modules .IP \(bu 2 ce1882943d Use salt.utils.files.mkstemp() instead .IP \(bu 2 -6689bd3b2d Dont use dangerous os.tmpnam +6689bd3b2d Don\(aqt use dangerous os.tmpnam .IP \(bu 2 2d6176b0bc Fx2 proxy minion: clean return, like all the other modules .UNINDENT @@ -506132,7 +507990,7 @@ b65f4ea4ea switch salt\-jenkins over to saltstack cab54e34b5 Merge pull request \fI\%#44173\fP from twangboy/win_system_docs .INDENT 2.0 .IP \(bu 2 -8e111b413d Fix some of the wording and grammer errors +8e111b413d Fix some of the wording and grammar errors .IP \(bu 2 a12bc5ae41 Use google style docstrings .UNINDENT @@ -506850,9 +508708,9 @@ fc5754c6a1 Merge pull request \fI\%#43917\fP from twangboy/win_unit_test_pillar @ \fI2017\-10\-17 15:24:19 UTC\fP .INDENT 2.0 .IP \(bu 2 -6252f82f58 Merge pull request \fI\%#44133\fP from cachedout/fix_paralell_docs +6252f82f58 Merge pull request \fI\%#44133\fP from cachedout/fix_parallel_docs .IP \(bu 2 -8d1c1e21f0 Fix typos in paralell states docs +8d1c1e21f0 Fix typos in parallel states docs .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#44135\fP: (\fI\%timfreund\fP) Insert missing verb in gitfs walkthrough @@ -507587,7 +509445,7 @@ dfef4a722c Merge branch \(aq2016.11\(aq into \(aq2017.7\(aq 1a8cc60bb4 Merge pull request \fI\%#43772\fP from gtmanfred/2016.11 .INDENT 2.0 .IP \(bu 2 -0194c60960 dont print Minion not responding with quiet +0194c60960 don\(aqt print Minion not responding with quiet .UNINDENT .IP \(bu 2 9dee896fb9 Merge pull request \fI\%#43747\fP from rallytime/gpg\-verification @@ -507680,7 +509538,9 @@ babad12d83 Revise "Contributing" docs: merge\-forwards/release branches explaine .UNINDENT .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#43737\fP: (\fI\%syedaali\fP) salt.loaded.int.module.boto_kinesis.__virtual__() is wrongly returning \fINone\fP\&. It should either return \fITrue\fP, \fIFalse\fP or a new name. If you\(aqre the developer of the module \(aqboto_kinesis\(aq, please fix this. (refs: \fI\%#43748\fP) +\fBISSUE\fP \fI\%#43737\fP: (\fI\%syedaali\fP) salt.loaded.int.module.boto_kinesis.__virtual__() is wrongly +returning \fINone\fP\&. It should either return \fITrue\fP, \fIFalse\fP or a new name. If you\(aqre the developer +of the module \(aqboto_kinesis\(aq, please fix this. (refs: \fI\%#43748\fP) .IP \(bu 2 \fBPR\fP \fI\%#43748\fP: (\fI\%rallytime\fP) Add message to boto_kinesis modules if boto libs are missing @ \fI2017\-09\-27 13:19:33 UTC\fP @@ -508891,7 +510751,11 @@ b4c689dff5 Merge pull request \fI\%#43191\fP from viktorkrivak/fix\-apache\-conf .IP \(bu 2 c15bcbe1cc Merge remote\-tracking branch \(aqupstream/2016.11\(aq into fix\-apache\-config\-multi\-entity .IP \(bu 2 -4164047951 Fix apache.config with multiple statement At this moment when you post more than one statement in config only last is used. Also file is rewrited multiple times until last statement is written. Example: salt \(aq*\(aq apache.config /etc/httpd/conf.d/ports.conf config="[{\(aqListen\(aq: \(aq8080\(aq}, {\(aqProxy\(aq: "Something"}]" Ends only with Proxy Something and ignore Listen 8080, This patch fix this issue. +4164047951 Fix apache.config with multiple statement At this moment when you post more than +one statement in config only last is used. Also file is rewritten multiple times until last +statement is written. Example: salt \(aq*\(aq apache.config /etc/httpd/conf.d/ports.conf +config="[{\(aqListen\(aq: \(aq8080\(aq}, {\(aqProxy\(aq: "Something"}]" Ends only with Proxy Something and +ignore Listen 8080, This patch fix this issue. .UNINDENT .IP \(bu 2 b90e59ede9 Merge pull request \fI\%#43154\fP from lomeroe/bp\-43116\-2016.11 @@ -509142,7 +511006,14 @@ Total Issue References: \fB58\fP .IP \(bu 2 Total PR References: \fB202\fP .IP \(bu 2 -Contributors: \fB52\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%GwiYeong\fP, \fI\%L4rS6\fP, \fI\%SteffenKockel\fP, \fI\%The\-Loeki\fP, \fI\%amendlik\fP, \fI\%andreaspe\fP, \fI\%angeloudy\fP, \fI\%aphor\fP, \fI\%bdrung\fP, \fI\%cebe\fP, \fI\%ciiqr\fP, \fI\%damon\-atkins\fP, \fI\%danlsgiga\fP, \fI\%ddoh94\fP, \fI\%dmurphy18\fP, \fI\%dwoz\fP, \fI\%eliasp\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%gclinch\fP, \fI\%gtmanfred\fP, \fI\%jfindlay\fP, \fI\%kstreee\fP, \fI\%marccardinal\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%michelsen\fP, \fI\%nullify005\fP, \fI\%oarmstrong\fP, \fI\%oeuftete\fP, \fI\%philpep\fP, \fI\%racker\-markh\fP, \fI\%rallytime\fP, \fI\%redbaron4\fP, \fI\%roaldnefs\fP, \fI\%rongshengfang\fP, \fI\%rongzeng54\fP, \fI\%rrroo\fP, \fI\%samilaine\fP, \fI\%samodid\fP, \fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%tintoy\fP, \fI\%twangboy\fP, \fI\%viktordaniel\fP, \fI\%vutny\fP, \fI\%while0pass\fP, \fI\%whytewolf\fP, \fI\%zer0def\fP) +Contributors: \fB52\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%GwiYeong\fP, \fI\%L4rS6\fP, \fI\%SteffenKockel\fP, +\fI\%The\-Loeki\fP, \fI\%amendlik\fP, \fI\%andreaspe\fP, \fI\%angeloudy\fP, \fI\%aphor\fP, \fI\%bdrung\fP, \fI\%cebe\fP, \fI\%ciiqr\fP, +\fI\%damon\-atkins\fP, \fI\%danlsgiga\fP, \fI\%ddoh94\fP, \fI\%dmurphy18\fP, \fI\%dwoz\fP, \fI\%eliasp\fP, \fI\%frogunder\fP, +\fI\%garethgreenaway\fP, \fI\%gclinch\fP, \fI\%gtmanfred\fP, \fI\%jfindlay\fP, \fI\%kstreee\fP, \fI\%marccardinal\fP, +\fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%michelsen\fP, \fI\%nullify005\fP, \fI\%oarmstrong\fP, \fI\%oeuftete\fP, +\fI\%philpep\fP, \fI\%racker\-markh\fP, \fI\%rallytime\fP, \fI\%redbaron4\fP, \fI\%roaldnefs\fP, \fI\%rongshengfang\fP, +\fI\%rongzeng54\fP, \fI\%rrroo\fP, \fI\%samilaine\fP, \fI\%samodid\fP, \fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%tintoy\fP, +\fI\%twangboy\fP, \fI\%viktordaniel\fP, \fI\%vutny\fP, \fI\%while0pass\fP, \fI\%whytewolf\fP, \fI\%zer0def\fP) .UNINDENT .SS Changes to \fBfile.blockreplace\fP State .sp @@ -510196,7 +512067,7 @@ e8678f633d Fix Comment being None not \(aq\(aq and inject quotes into the TXT Ch @ \fI2018\-02\-16 14:53:15 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#39980\fP: (\fI\%vutny\fP) [2016.3] Allow to use \fIbg\fP kwarg for \fIcmd.run\fP state function (refs: \fI\%#45932\fP) +\fBPR\fP \fI\%#39980\fP: (\fI\%vutny\fP) [2016.3] Allow using \fIbg\fP kwarg for \fIcmd.run\fP state function (refs: \fI\%#45932\fP) .IP \(bu 2 5e0e2a30e2 Merge pull request \fI\%#45932\fP from The\-Loeki/fix_cmd_run_all_bg .IP \(bu 2 @@ -511418,7 +513289,13 @@ Total Issue References: \fB60\fP .IP \(bu 2 Total PR References: \fB217\fP .IP \(bu 2 -Contributors: \fB47\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%GwiYeong\fP, \fI\%Quarky9\fP, \fI\%RichardW42\fP, \fI\%UtahDave\fP, \fI\%amaclean199\fP, \fI\%arif\-ali\fP, \fI\%baniobloom\fP, \fI\%bdrung\fP, \fI\%benediktwerner\fP, \fI\%bmiguel\-teixeira\fP, \fI\%cachedout\fP, \fI\%dafenko\fP, \fI\%damon\-atkins\fP, \fI\%dwoz\fP, \fI\%ezh\fP, \fI\%folti\fP, \fI\%fpicot\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jeroennijhof\fP, \fI\%jfindlay\fP, \fI\%jfoboss\fP, \fI\%kstreee\fP, \fI\%lomeroe\fP, \fI\%mattp\-\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%myinitialsarepm\fP, \fI\%mzbroch\fP, \fI\%nages13\fP, \fI\%paclat\fP, \fI\%pcjeff\fP, \fI\%pruiz\fP, \fI\%psyer\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%skizunov\fP, \fI\%smitty42\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%yagnik\fP, \fI\%yannj\-fr\fP) +Contributors: \fB47\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%GwiYeong\fP, \fI\%Quarky9\fP, \fI\%RichardW42\fP, +\fI\%UtahDave\fP, \fI\%amaclean199\fP, \fI\%arif\-ali\fP, \fI\%baniobloom\fP, \fI\%bdrung\fP, \fI\%benediktwerner\fP, +\fI\%bmiguel\-teixeira\fP, \fI\%cachedout\fP, \fI\%dafenko\fP, \fI\%damon\-atkins\fP, \fI\%dwoz\fP, \fI\%ezh\fP, \fI\%folti\fP, +\fI\%fpicot\fP, \fI\%frogunder\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jeroennijhof\fP, \fI\%jfindlay\fP, +\fI\%jfoboss\fP, \fI\%kstreee\fP, \fI\%lomeroe\fP, \fI\%mattp\-\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%myinitialsarepm\fP, +\fI\%mzbroch\fP, \fI\%nages13\fP, \fI\%paclat\fP, \fI\%pcjeff\fP, \fI\%pruiz\fP, \fI\%psyer\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, +\fI\%skizunov\fP, \fI\%smitty42\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%yagnik\fP, \fI\%yannj\-fr\fP) .UNINDENT .SS Tornado 5.0 Support for Python 2 Only .sp @@ -511724,7 +513601,7 @@ d228e72477 update ubuntu\-rolling to 18.04 .IP \(bu 2 \fBISSUE\fP \fI\%#45790\fP: (\fI\%bdarnell\fP) Test with Tornado 5.0b1 (refs: \fI\%#47106\fP, \fI\%#47433\fP) .IP \(bu 2 -\fBPR\fP \fI\%#47433\fP: (\fI\%s0undt3ch\fP) Add missing requirements files not commited in \fI\%#47106\fP +\fBPR\fP \fI\%#47433\fP: (\fI\%s0undt3ch\fP) Add missing requirements files not committed in \fI\%#47106\fP @ \fI2018\-05\-02 20:57:14 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -511732,7 +513609,7 @@ d228e72477 update ubuntu\-rolling to 18.04 .IP \(bu 2 ed69821d19 Merge pull request \fI\%#47433\fP from s0undt3ch/2017.7 .IP \(bu 2 -5abadf25d6 Add missing requirements files not commited in \fI\%#47106\fP +5abadf25d6 Add missing requirements files not committed in \fI\%#47106\fP .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#47424\fP: (\fI\%bcharron\fP) "salt\-cloud \-m" fails with nova driver: "There was a query error: u\(aqstate\(aq" (refs: \fI\%#47429\fP) @@ -511970,7 +513847,7 @@ bcef34f7e1 Merge pull request \fI\%#47334\fP from terminalmage/ldap_pillar .IP \(bu 2 65c3ba7ff1 Remove useless documentation .IP \(bu 2 -5d67cb27de Remove unncessary commented line +5d67cb27de Remove unnecessary commented line .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47347\fP: (\fI\%dwoz\fP) Proper fix for mysql tests @@ -512055,7 +513932,7 @@ dac04261b5 Merge pull request \fI\%#47342\fP from dwoz/test_mysql_fix 85451f48d4 Fix python 3 support for inet_pton function .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#47339\fP: (\fI\%dwoz\fP) Use salt.utils.fopen for line ending consistancy +\fBPR\fP \fI\%#47339\fP: (\fI\%dwoz\fP) Use salt.utils.fopen for line ending consistency @ \fI2018\-04\-26 22:39:56 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -512065,7 +513942,7 @@ e37a93a1ca Remove redundent close call .IP \(bu 2 b2ae5889b7 Close the temporary file handle .IP \(bu 2 -9f7f83a975 Use salt.utils.fopen for line ending consistancy +9f7f83a975 Use salt.utils.fopen for line ending consistency .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47335\fP: (\fI\%dwoz\fP) Remove un\-needed string\-escape @@ -512243,7 +514120,7 @@ ad80028104 This way, we can pass flags such as \fBdebug\fP into the state, but a .IP \(bu 2 \fBPR\fP \fI\%#47207\fP: (\fI\%benediktwerner\fP) Fix pip_state with pip3 if no changes occourred (refs: \fI\%#47220\fP) .IP \(bu 2 -\fBPR\fP \fI\%#47102\fP: (\fI\%gtmanfred\fP) dont allow using no_use_wheel for pip 10.0.0 or newer (refs: \fI\%#47220\fP) +\fBPR\fP \fI\%#47102\fP: (\fI\%gtmanfred\fP) don\(aqt allow using no_use_wheel for pip 10.0.0 or newer (refs: \fI\%#47220\fP) .IP \(bu 2 4e2e1f0719 Merge pull request \fI\%#47220\fP from benediktwerner/fix\-pip\-2017.7 .IP \(bu 2 @@ -512472,7 +514349,7 @@ da2f6a3fac Merge pull request \fI\%#47131\fP from gtmanfred/cli bd0c23396c fix pip.req import error in pip 10.0.0 .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#47102\fP: (\fI\%gtmanfred\fP) dont allow using no_use_wheel for pip 10.0.0 or newer (refs: \fI\%#47220\fP) +\fBPR\fP \fI\%#47102\fP: (\fI\%gtmanfred\fP) don\(aqt allow using no_use_wheel for pip 10.0.0 or newer (refs: \fI\%#47220\fP) @ \fI2018\-04\-17 20:44:58 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -512484,7 +514361,7 @@ eb5ac51a48 Merge pull request \fI\%#47102\fP from gtmanfred/2017.7 .IP \(bu 2 4c07a3d1e9 fix other tests .IP \(bu 2 -b71e3d8a04 dont allow using no_use_wheel for pip 10.0.0 or newer +b71e3d8a04 don\(aqt allow using no_use_wheel for pip 10.0.0 or newer .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47037\fP: (\fI\%twangboy\fP) Fix build_env scripts @@ -512912,7 +514789,7 @@ bf5034dbdb Merge branch \(aq2017.7\(aq into bugfix\-grain\-virtual_subtype .IP \(bu 2 058bbed221 Merge pull request \fI\%#46799\fP from garethgreenaway/46762_prereq_shenanigans_tests .IP \(bu 2 -13875e78cf Fixing documention string for test. +13875e78cf Fixing documentation string for test. .IP \(bu 2 3d288c44d4 Fixing test documentation .IP \(bu 2 @@ -513081,7 +514958,7 @@ c460f62081 Merge pull request \fI\%#46800\fP from lomeroe/2017_7\-46627 2bee383e9d correct create list item value names if the valuePrefix attribute does not exist on the list item, the value is the value name, other wise, the valuename a number with the valuePrefix prepended to it .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#46347\fP: (\fI\%twangboy\fP) Buid 449: unit.modules.test_inspect_collector (refs: \fI\%#46675\fP) +\fBISSUE\fP \fI\%#46347\fP: (\fI\%twangboy\fP) Build 449: unit.modules.test_inspect_collector (refs: \fI\%#46675\fP) .IP \(bu 2 \fBPR\fP \fI\%#46675\fP: (\fI\%dwoz\fP) Skip test when git symlinks are not configured @ \fI2018\-04\-03 12:19:19 UTC\fP @@ -513281,11 +515158,11 @@ b40efc5db8 Windows test client fixes @ \fI2018\-03\-28 13:43:17 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#46032\fP: (\fI\%DmitryKuzmenko\fP) Workaroung python bug in traceback.format_exc() (refs: \fI\%#46732\fP) +\fBPR\fP \fI\%#46032\fP: (\fI\%DmitryKuzmenko\fP) Workaround python bug in traceback.format_exc() (refs: \fI\%#46732\fP) .IP \(bu 2 1222bdbc00 Merge pull request \fI\%#46732\fP from rallytime/bp\-46032 .IP \(bu 2 -bf0b962dc0 Workaroung python bug in traceback.format_exc() +bf0b962dc0 Workaround python bug in traceback.format_exc() .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#28142\fP: (\fI\%zmalone\fP) Deprecate or update the copr repo (refs: \fI\%#46749\fP) @@ -513590,7 +515467,7 @@ fa0b0efe46 Fix some installer script inconsistencies .IP \(bu 2 f038e3c452 Merge pull request \fI\%#46571\fP from garethgreenaway/46552_onfail_and_require .IP \(bu 2 -152c43c843 Accounting for a case when multiple onfails are used along with requires. Previously if you have multiple states using \(aqonfail\(aq and two of those states using a \(aqrequire\(aq against the first one state, the last two will run even if the \(aqonfail\(aq isn\(aqt met because the \(aqrequire\(aq is met because the first state returns true even though it didn\(aqt excute. This change adds an additional hidden variable that is used when checking requisities to determine if the state actually ran. +152c43c843 Accounting for a case when multiple onfails are used along with requires. Previously if you have multiple states using \(aqonfail\(aq and two of those states using a \(aqrequire\(aq against the first one state, the last two will run even if the \(aqonfail\(aq isn\(aqt met because the \(aqrequire\(aq is met because the first state returns true even though it didn\(aqt execute. This change adds an additional hidden variable that is used when checking requisities to determine if the state actually ran. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#46512\fP: (\fI\%blarghmatey\fP) git.pull failing when run from the salt scheduler (refs: \fI\%#46520\fP) @@ -513698,11 +515575,11 @@ bb338c464c Fix dimensionsdata test random_name call @ \fI2018\-03\-13 17:08:52 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#45769\fP: (\fI\%Quarky9\fP) Surpress boto WARNING during SQS msg decode in sqs_engine (refs: \fI\%#46511\fP) +\fBPR\fP \fI\%#45769\fP: (\fI\%Quarky9\fP) Suppress boto WARNING during SQS msg decode in sqs_engine (refs: \fI\%#46511\fP) .IP \(bu 2 5cc11129f1 Merge pull request \fI\%#46511\fP from rallytime/bp\-45769 .IP \(bu 2 -a8ffceda53 Surpress boto WARNING during decode, reference: \fI\%https://github.com/boto/boto/issues/2965\fP +a8ffceda53 Suppress boto WARNING during decode, reference: \fI\%https://github.com/boto/boto/issues/2965\fP .UNINDENT .UNINDENT .SS Salt 2017.7.7 Release Notes @@ -513802,7 +515679,14 @@ Total Issue References: \fB48\fP .IP \(bu 2 Total PR References: \fB279\fP .IP \(bu 2 -Contributors: \fB52\fP (\fI\%AVeenstra\fP, \fI\%Ch3LL\fP, \fI\%Circuitsoft\fP, \fI\%DmitryKuzmenko\fP, \fI\%KaiSforza\fP, \fI\%Martin819\fP, \fI\%OrlandoArcapix\fP, \fI\%UtahDave\fP, \fI\%Vaelatern\fP, \fI\%abednarik\fP, \fI\%asnell\fP, \fI\%b1naryth1ef\fP, \fI\%baniobloom\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%beornf\fP, \fI\%bmcorser\fP, \fI\%bowmanjd\-lms\fP, \fI\%damon\-atkins\fP, \fI\%darkpixel\fP, \fI\%discogestalt\fP, \fI\%doesitblend\fP, \fI\%dqminh\fP, \fI\%dubb\-b\fP, \fI\%dwoz\fP, \fI\%frankiexyz\fP, \fI\%frogunder\fP, \fI\%fzipi\fP, \fI\%garethgreenaway\fP, \fI\%grokrecursion\fP, \fI\%gtmanfred\fP, \fI\%jacksontj\fP, \fI\%jagguli\fP, \fI\%lejambon\fP, \fI\%lomeroe\fP, \fI\%lordcirth\fP, \fI\%lusche\fP, \fI\%mbunkus\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%nbraud\fP, \fI\%pritambaral\fP, \fI\%ralex\fP, \fI\%rallytime\fP, \fI\%rmcintosh\fP, \fI\%slaws\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%twellspring\fP, \fI\%wyardley\fP, \fI\%xetix\fP, \fI\%zer0def\fP) +Contributors: \fB52\fP (\fI\%AVeenstra\fP, \fI\%Ch3LL\fP, \fI\%Circuitsoft\fP, \fI\%DmitryKuzmenko\fP, \fI\%KaiSforza\fP, +\fI\%Martin819\fP, \fI\%OrlandoArcapix\fP, \fI\%UtahDave\fP, \fI\%Vaelatern\fP, \fI\%abednarik\fP, \fI\%asnell\fP, +\fI\%b1naryth1ef\fP, \fI\%baniobloom\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%beornf\fP, \fI\%bmcorser\fP, \fI\%bowmanjd\-lms\fP, +\fI\%damon\-atkins\fP, \fI\%darkpixel\fP, \fI\%discogestalt\fP, \fI\%doesitblend\fP, \fI\%dqminh\fP, \fI\%dubb\-b\fP, \fI\%dwoz\fP, +\fI\%frankiexyz\fP, \fI\%frogunder\fP, \fI\%fzipi\fP, \fI\%garethgreenaway\fP, \fI\%grokrecursion\fP, \fI\%gtmanfred\fP, +\fI\%jacksontj\fP, \fI\%jagguli\fP, \fI\%lejambon\fP, \fI\%lomeroe\fP, \fI\%lordcirth\fP, \fI\%lusche\fP, \fI\%mbunkus\fP, +\fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%nbraud\fP, \fI\%pritambaral\fP, \fI\%ralex\fP, \fI\%rallytime\fP, \fI\%rmcintosh\fP, +\fI\%slaws\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%twellspring\fP, \fI\%wyardley\fP, \fI\%xetix\fP, \fI\%zer0def\fP) .UNINDENT .SS Security Fix .sp @@ -514270,7 +516154,7 @@ a84f5155a1 Merge pull request \fI\%#48869\fP from Ch3LL/mac_shell_tests .IP \(bu 2 8a1285239a Merge pull request \fI\%#48426\fP from garethgreenaway/46689_fixing_pkg_held_when_package_is_installed .IP \(bu 2 -9b0f5dd212 Fixing identation, removing some unnecessary conditionals. +9b0f5dd212 Fixing indentation, removing some unnecessary conditionals. .IP \(bu 2 727964ab55 One last cleanup. .IP \(bu 2 @@ -514506,7 +516390,7 @@ b2431eab10 Merge pull request \fI\%#48715\fP from rallytime/flaky\-tests .IP \(bu 2 83e4bba916 Merge pull request \fI\%#48635\fP from nbraud/acme .IP \(bu 2 -3673bae9de modules/acme: explicitely ignore the \fIperms\fP return value +3673bae9de modules/acme: explicitly ignore the \fIperms\fP return value .IP \(bu 2 1800a231e8 Fixup some schema expectations .IP \(bu 2 @@ -514728,9 +516612,9 @@ cb654bbf2c Add timeouts to all s3 queries .IP \(bu 2 1b6e6388f8 Merge pull request \fI\%#48588\fP from garethgreenaway/48415_event_send_multi_master .IP \(bu 2 -fab25af1a9 Adding some quick documention about why we are setting ret=True following the channel.send. +fab25af1a9 Adding some quick documentation about why we are setting ret=True following the channel.send. .IP \(bu 2 -bf78f4b188 If the channel send is sucessful and does not raise an exception, we set ret to True, in case a previous exception from a previous channel send to another master has sent it to False. +bf78f4b188 If the channel send is successful and does not raise an exception, we set ret to True, in case a previous exception from a previous channel send to another master has sent it to False. .IP \(bu 2 8d1551c5fb When using Salt multi\-master, if we encouter a salt master that has not accepted the minion key yet we should not exit right away, rather continue on and try the next salt master available in the list. .UNINDENT @@ -515313,11 +517197,11 @@ b965d6c9b3 If pip binary is passed to bin_env, use that pip binary @ \fI2018\-06\-25 19:06:42 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#47453\fP: (\fI\%dqminh\fP) dont reset system locale when running rabbitmqctl commands (refs: \fI\%#48293\fP) +\fBPR\fP \fI\%#47453\fP: (\fI\%dqminh\fP) don\(aqt reset system locale when running rabbitmqctl commands (refs: \fI\%#48293\fP) .IP \(bu 2 06a927b2aa Merge pull request \fI\%#48293\fP from rallytime/bp\-47453 .IP \(bu 2 -e96ab6778e dont reset system locale when running rabbitmqctl commands +e96ab6778e don\(aqt reset system locale when running rabbitmqctl commands .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#48219\fP: (\fI\%zer0def\fP) Fix: LXC legacy configuration key warnings falsely report errors during state change @@ -515350,7 +517234,7 @@ d63cf3f072 Fixes another case of legacy configuration key usage warning getting .IP \(bu 2 83d7d286c4 Merge pull request \fI\%#48080\fP from lusche/2017.7 .IP \(bu 2 -917dc985fc \fI\%#47984\fP remove the line completly +917dc985fc \fI\%#47984\fP remove the line completely .IP \(bu 2 ba12ee947b Merge branch \(aq2017.7\(aq of \fI\%https://github.com/saltstack/salt\fP into 2017.7 .IP \(bu 2 @@ -516084,13 +517968,13 @@ be8dcd21f1 Try an even bigger timeout 4475ba19b8 Prevent zypper from parsing repo configuration from not .repo files .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#47781\fP: (\fI\%rallytime\fP) Update cloud test profile and docs to use new Linode size lables +\fBPR\fP \fI\%#47781\fP: (\fI\%rallytime\fP) Update cloud test profile and docs to use new Linode size labels @ \fI2018\-05\-23 13:09:13 UTC\fP .INDENT 2.0 .IP \(bu 2 0e87559ee3 Merge pull request \fI\%#47781\fP from rallytime/update\-linode\-sizes .IP \(bu 2 -a90c1b760e Update cloud test profile and docs to use new Linode size lables +a90c1b760e Update cloud test profile and docs to use new Linode size labels .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47748\fP: (\fI\%rallytime\fP) [2017.7] Merge forward from 2017.7.6 to 2017.7 @@ -516520,13 +518404,13 @@ e9c1723175 Merge pull request \fI\%#47408\fP from Ch3LL/skip_diskusage d22ed7dffa added handling for the aws error ConflictingDomainExists .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#47444\fP: (\fI\%terminalmage\fP) Skip trying to render a template for a nonexistant SLS file +\fBPR\fP \fI\%#47444\fP: (\fI\%terminalmage\fP) Skip trying to render a template for a nonexistent SLS file @ \fI2018\-05\-07 13:48:24 UTC\fP .INDENT 2.0 .IP \(bu 2 7f53be6e92 Merge pull request \fI\%#47444\fP from terminalmage/render_state\-spurious\-error .IP \(bu 2 -a1e9fe00fd Skip trying to render a template for a nonexistant SLS file +a1e9fe00fd Skip trying to render a template for a nonexistent SLS file .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#47478\fP: (\fI\%terminalmage\fP) Rename pip state test modules to match naming convention @@ -516587,7 +518471,7 @@ This release is still in progress and has not been released yet. .SS GCE Driver .sp The GCE salt cloud driver can now be used with GCE instance credentials by -setting the configuration paramaters \fBservice_account_private_key\fP and +setting the configuration parameters \fBservice_account_private_key\fP and \fBservice_account_private_email\fP to an empty string. .SS Salt 2016.11.0 Release Notes \- Codename Carbon .SS New Features @@ -517635,7 +519519,11 @@ Total Issue References: \fB29\fP .IP \(bu 2 Total PR References: \fB83\fP .IP \(bu 2 -Contributors: \fB30\fP (\fI\%Ch3LL\fP, \fI\%Da\-Juan\fP, \fI\%DmitryKuzmenko\fP, \fI\%MTecknology\fP, \fI\%adelcast\fP, \fI\%attiasr\fP, \fI\%bbinet\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%dmurphy18\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jeanpralo\fP, \fI\%kraney\fP, \fI\%kstreee\fP, \fI\%lorengordon\fP, \fI\%mateiw\fP, \fI\%mirceaulinic\fP, \fI\%morsik\fP, \fI\%mschneider82\fP, \fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%scott\-w\fP, \fI\%sjorge\fP, \fI\%skizunov\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%ticosax\fP, \fI\%whiteinge\fP) +Contributors: \fB30\fP (\fI\%Ch3LL\fP, \fI\%Da\-Juan\fP, \fI\%DmitryKuzmenko\fP, \fI\%MTecknology\fP, \fI\%adelcast\fP, +\fI\%attiasr\fP, \fI\%bbinet\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%dmurphy18\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jeanpralo\fP, +\fI\%kraney\fP, \fI\%kstreee\fP, \fI\%lorengordon\fP, \fI\%mateiw\fP, \fI\%mirceaulinic\fP, \fI\%morsik\fP, \fI\%mschneider82\fP, +\fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%scott\-w\fP, \fI\%sjorge\fP, \fI\%skizunov\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, +\fI\%thatch45\fP, \fI\%ticosax\fP, \fI\%whiteinge\fP) .UNINDENT .SS Changelog for v2016.11.0..v2016.11.1 .sp @@ -518707,7 +520595,13 @@ Total Issue References: \fB34\fP .IP \(bu 2 Total PR References: \fB116\fP .IP \(bu 2 -Contributors: \fB45\fP (\fI\%Ch3LL\fP, \fI\%Cybolic\fP, \fI\%DmitryKuzmenko\fP, \fI\%UtahDave\fP, \fI\%Vaelatern\fP, \fI\%alex\-zel\fP, \fI\%alxwr\fP, \fI\%amendlik\fP, \fI\%anlutro\fP, \fI\%aosagie\fP, \fI\%basdusee\fP, \fI\%bbinet\fP, \fI\%benediktwerner\fP, \fI\%cachedout\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%dereckson\fP, \fI\%disaster123\fP, \fI\%ewapptus\fP, \fI\%ezh\fP, \fI\%folti\fP, \fI\%gmacon\fP, \fI\%gqgunhed\fP, \fI\%gtmanfred\fP, \fI\%kkoppel\fP, \fI\%lorengordon\fP, \fI\%martintamare\fP, \fI\%mcalmer\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%mostafahussein\fP, \fI\%mvdwalle\fP, \fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%scthi\fP, \fI\%sjorge\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%tsaridas\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%wolfpackmars2\fP, \fI\%yhekma\fP, \fI\%yopito\fP, \fI\%yue9944882\fP) +Contributors: \fB45\fP (\fI\%Ch3LL\fP, \fI\%Cybolic\fP, \fI\%DmitryKuzmenko\fP, \fI\%UtahDave\fP, \fI\%Vaelatern\fP, +\fI\%alex\-zel\fP, \fI\%alxwr\fP, \fI\%amendlik\fP, \fI\%anlutro\fP, \fI\%aosagie\fP, \fI\%basdusee\fP, \fI\%bbinet\fP, +\fI\%benediktwerner\fP, \fI\%cachedout\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%dereckson\fP, \fI\%disaster123\fP, \fI\%ewapptus\fP, +\fI\%ezh\fP, \fI\%folti\fP, \fI\%gmacon\fP, \fI\%gqgunhed\fP, \fI\%gtmanfred\fP, \fI\%kkoppel\fP, \fI\%lorengordon\fP, +\fI\%martintamare\fP, \fI\%mcalmer\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%mostafahussein\fP, \fI\%mvdwalle\fP, +\fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%scthi\fP, \fI\%sjorge\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%tsaridas\fP, +\fI\%twangboy\fP, \fI\%vutny\fP, \fI\%wolfpackmars2\fP, \fI\%yhekma\fP, \fI\%yopito\fP, \fI\%yue9944882\fP) .UNINDENT .SS Security Fixes .sp @@ -518914,9 +520808,9 @@ fa01367599 Keep a copy of the DEFAULT_API_OPTS and restore them after the test r .IP \(bu 2 fd2ee7db30 Add some simple unit tests for salt.config.api_config function .IP \(bu 2 -3d2fefc83b Make sure the pidfile and log_file values are overriden by api opts +3d2fefc83b Make sure the pidfile and log_file values are overridden by api opts .IP \(bu 2 -1f6b540e46 Make sure the pidfile and log_file values are overriden by api opts +1f6b540e46 Make sure the pidfile and log_file values are overridden by api opts .IP \(bu 2 04d307f917 salt\-api no longer forces the default timeout .UNINDENT @@ -519210,7 +521104,7 @@ db60bed24c Add NameError to exception in avahi_announce beacon .IP \(bu 2 7b657ca4ae add the ability to use keystone v2 and v3 .IP \(bu 2 -5646ae1b34 add ability to use keystoneauth to authenitcate in nova driver +5646ae1b34 add ability to use keystoneauth to authenticate in nova driver .UNINDENT .IP \(bu 2 383768d838 Merge pull request \fI\%#38650\fP from rallytime/remove\-ubuntu\-ppa\-docs @@ -519401,7 +521295,7 @@ f64e003a69 Merge pull request \fI\%#38612\fP from sjorge/2016.11\-solaris\-iface 26fae54f5b network.ifacestartswith throws exception on Solaris\-like platforms .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#37027\fP: (\fI\%sjorge\fP) Solaris FQDN/UQDN and documentation/consistancy (refs: \fI\%#38615\fP) +\fBISSUE\fP \fI\%#37027\fP: (\fI\%sjorge\fP) Solaris FQDN/UQDN and documentation/consistency (refs: \fI\%#38615\fP) .IP \(bu 2 \fBPR\fP \fI\%#38615\fP: (\fI\%sjorge\fP) add note related to issue \fI\%#37027\fP @ \fI2017\-01\-06 16:38:34 UTC\fP @@ -519664,7 +521558,7 @@ ef26e93bb7 Some fixes and pylint .IP \(bu 2 68d5475c1f Fixing Snapper unit tests for SUBVOLUME support .IP \(bu 2 -e9919a913f Removing posible double \(aq/\(aq from the file paths +e9919a913f Removing possible double \(aq/\(aq from the file paths .IP \(bu 2 8b4f87f226 Updating and fixing the documentation .IP \(bu 2 @@ -520189,15 +522083,15 @@ fa9ad311c6 Also check if pillarenv is in opts 6b9060c38f [2016.3] Bump latest release version to 2016.11.1 (\fI\%#38256\fP) .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#38231\fP: (\fI\%tjuup\fP) Typo: salt\-key deleteed (refs: \fI\%#38232\fP) +\fBISSUE\fP \fI\%#38231\fP: (\fI\%tjuup\fP) Typo: salt\-key deleted (refs: \fI\%#38232\fP) .IP \(bu 2 -\fBPR\fP \fI\%#38232\fP: (\fI\%rallytime\fP) Strip final \(aqe\(aq in key cmd to correct "deleteed" misspelling +\fBPR\fP \fI\%#38232\fP: (\fI\%rallytime\fP) Strip final \(aqe\(aq in key cmd to correct "deleted" misspelling @ \fI2016\-12\-15 10:38:49 UTC\fP .INDENT 2.0 .IP \(bu 2 0af343e71f Merge pull request \fI\%#38232\fP from rallytime/fix\-38231 .IP \(bu 2 -26e1ee3650 Strip final \(aqe\(aq in key cmd to correct "deleteed" misspelling +26e1ee3650 Strip final \(aqe\(aq in key cmd to correct "deleted" misspelling .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#38200\fP: (\fI\%sebw\fP) selinux.mode doesn\(aqt return any output and doesn\(aqt persist (refs: \fI\%#38236\fP) @@ -520336,7 +522230,13 @@ Total Issue References: \fB49\fP .IP \(bu 2 Total PR References: \fB130\fP .IP \(bu 2 -Contributors: \fB47\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%MTecknology\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%anlutro\fP, \fI\%arthru\fP, \fI\%axmetishe\fP, \fI\%bailsman\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%clinta\fP, \fI\%corywright\fP, \fI\%cro\fP, \fI\%dmaziuk\fP, \fI\%dmitrievav\fP, \fI\%dmurphy18\fP, \fI\%eliasp\fP, \fI\%eradman\fP, \fI\%ezh\fP, \fI\%gtmanfred\fP, \fI\%hu\-dabao\fP, \fI\%hujunya\fP, \fI\%isbm\fP, \fI\%jak3kaj\fP, \fI\%janhorstmann\fP, \fI\%joe\-niland\fP, \fI\%kevinanderson1\fP, \fI\%kstreee\fP, \fI\%l2ol33rt\fP, \fI\%lomeroe\fP, \fI\%mcalmer\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%nasenbaer13\fP, \fI\%nicholasmhughes\fP, \fI\%rallytime\fP, \fI\%sakateka\fP, \fI\%sergeizv\fP, \fI\%sjorge\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%toanju\fP, \fI\%twangboy\fP, \fI\%vutny\fP) +Contributors: \fB47\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%MTecknology\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, +\fI\%anlutro\fP, \fI\%arthru\fP, \fI\%axmetishe\fP, \fI\%bailsman\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%clinta\fP, +\fI\%corywright\fP, \fI\%cro\fP, \fI\%dmaziuk\fP, \fI\%dmitrievav\fP, \fI\%dmurphy18\fP, \fI\%eliasp\fP, \fI\%eradman\fP, \fI\%ezh\fP, +\fI\%gtmanfred\fP, \fI\%hu\-dabao\fP, \fI\%hujunya\fP, \fI\%isbm\fP, \fI\%jak3kaj\fP, \fI\%janhorstmann\fP, \fI\%joe\-niland\fP, +\fI\%kevinanderson1\fP, \fI\%kstreee\fP, \fI\%l2ol33rt\fP, \fI\%lomeroe\fP, \fI\%mcalmer\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, +\fI\%morganwillcock\fP, \fI\%nasenbaer13\fP, \fI\%nicholasmhughes\fP, \fI\%rallytime\fP, \fI\%sakateka\fP, \fI\%sergeizv\fP, +\fI\%sjorge\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%toanju\fP, \fI\%twangboy\fP, \fI\%vutny\fP) .UNINDENT .SS Changelog for v2016.11.2..v2016.11.3 .sp @@ -520764,7 +522664,7 @@ f16027d30e Merge pull request \fI\%#39297\fP from cro/pg_returner_docs 52440416ca Merge pull request \fI\%#39221\fP from lvg01/fix\-bug\-39220 .INDENT 2.0 .IP \(bu 2 -e8a41d6341 Removes to early content stripping (stripping is allready done when needed with ident:true), fixes \fI\%#39220\fP +e8a41d6341 Removes to early content stripping (stripping is already done when needed with ident:true), fixes \fI\%#39220\fP .IP \(bu 2 a4b169e0bd Fixed wrong logic, fixes \fI\%#39220\fP .UNINDENT @@ -520878,7 +522778,7 @@ f3d35fb5c6 Lint fixes .UNINDENT .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#39269\fP: (\fI\%alexharrington\fP) Remount forced with lizardfs fuse filesystem due to device missmatch (refs: \fI\%#39276\fP) +\fBISSUE\fP \fI\%#39269\fP: (\fI\%alexharrington\fP) Remount forced with lizardfs fuse filesystem due to device mismatch (refs: \fI\%#39276\fP) .IP \(bu 2 \fBISSUE\fP \fI\%#39106\fP: (\fI\%carsten\-AEI\fP) CVMFS fuse mount gets remounted every time (refs: \fI\%#39276\fP) .IP \(bu 2 @@ -521155,7 +523055,7 @@ bffc537aca Remove extra if statements (rstrip will check for the presence anyway 97521b3468 Second attempt to fix prepending of root_dir to paths .UNINDENT .IP \(bu 2 -6ffeda3ee5 Clarify ipv6 option for minion and inteface for master, closes \fI\%#39118\fP (\fI\%#39131\fP) +6ffeda3ee5 Clarify ipv6 option for minion and interface for master, closes \fI\%#39118\fP (\fI\%#39131\fP) .IP \(bu 2 646b9ea4e5 Don\(aqt abort pillar.get with merge=True if default is None (\fI\%#39116\fP) .UNINDENT @@ -521705,7 +523605,7 @@ b5df104fc2 Merge pull request \fI\%#38875\fP from terminalmage/issue36121 .IP \(bu 2 fbc4d2a2c4 reactor: ensure glob_ref is a string .IP \(bu 2 -2e443d79a3 cp.cache_file: add note re: return for nonexistant salt:// path +2e443d79a3 cp.cache_file: add note re: return for nonexistent salt:// path .UNINDENT .IP \(bu 2 e9ebec4d80 Merge pull request \fI\%#38890\fP from cro/vmware_reset_vm_20163 @@ -521885,7 +523785,16 @@ Total Issue References: \fB63\fP .IP \(bu 2 Total PR References: \fB223\fP .IP \(bu 2 -Contributors: \fB62\fP (\fI\%Ch3LL\fP, \fI\%DennisHarper\fP, \fI\%DmitryKuzmenko\fP, \fI\%L4rS6\fP, \fI\%MasterNayru\fP, \fI\%Seb\-Solon\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%aabognah\fP, \fI\%alankrita\fP, \fI\%amontalban\fP, \fI\%ardakuyumcu\fP, \fI\%attiasr\fP, \fI\%bdrung\fP, \fI\%bewing\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%defanator\fP, \fI\%discountbin\fP, \fI\%dmurphy18\fP, \fI\%drawsmcgraw\fP, \fI\%eldadru\fP, \fI\%garethgreenaway\fP, \fI\%githubcdr\fP, \fI\%gtmanfred\fP, \fI\%hkrist\fP, \fI\%isbm\fP, \fI\%jbadson\fP, \fI\%jeanpralo\fP, \fI\%jettero\fP, \fI\%jinm\fP, \fI\%joe\-niland\fP, \fI\%kaszuba\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%mateiw\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%mlalpho\fP, \fI\%narendraingale2\fP, \fI\%nmadhok\fP, \fI\%rallytime\fP, \fI\%redbaron4\fP, \fI\%roaldnefs\fP, \fI\%s0undt3ch\fP, \fI\%skazi0\fP, \fI\%skizunov\fP, \fI\%smarsching\fP, \fI\%sofixa\fP, \fI\%sp1r\fP, \fI\%sthrasher\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thor\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%zer0def\fP) +Contributors: \fB62\fP (\fI\%Ch3LL\fP, \fI\%DennisHarper\fP, \fI\%DmitryKuzmenko\fP, \fI\%L4rS6\fP, \fI\%MasterNayru\fP, +\fI\%Seb\-Solon\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%aabognah\fP, \fI\%alankrita\fP, \fI\%amontalban\fP, +\fI\%ardakuyumcu\fP, \fI\%attiasr\fP, \fI\%bdrung\fP, \fI\%bewing\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%defanator\fP, +\fI\%discountbin\fP, \fI\%dmurphy18\fP, \fI\%drawsmcgraw\fP, \fI\%eldadru\fP, \fI\%garethgreenaway\fP, \fI\%githubcdr\fP, +\fI\%gtmanfred\fP, \fI\%hkrist\fP, \fI\%isbm\fP, \fI\%jbadson\fP, \fI\%jeanpralo\fP, \fI\%jettero\fP, \fI\%jinm\fP, \fI\%joe\-niland\fP, +\fI\%kaszuba\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%mateiw\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, +\fI\%mirceaulinic\fP, \fI\%mlalpho\fP, \fI\%narendraingale2\fP, \fI\%nmadhok\fP, \fI\%rallytime\fP, \fI\%redbaron4\fP, +\fI\%roaldnefs\fP, \fI\%s0undt3ch\fP, \fI\%skazi0\fP, \fI\%skizunov\fP, \fI\%smarsching\fP, \fI\%sofixa\fP, \fI\%sp1r\fP, +\fI\%sthrasher\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thor\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, +\fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%zer0def\fP) .UNINDENT .SS AIX Support Expanded .sp @@ -522911,7 +524820,7 @@ d7d3d68035 Merge pull request \fI\%#40362\fP from rallytime/merge\-2016.11 .IP \(bu 2 d68067f1d7 Merge remote\-tracking branch \(aqmain/2016.11\(aq into pip\-cache\-fixes .IP \(bu 2 -4f23a23ca8 Fixed the \fItest_install_download_cache_argument_in_resulting_command\fP to accomodate introduced cache directory argument fixes and renamed it to \fItest_install_download_cache_dir_arguments_in_resulting_command\fP\&. +4f23a23ca8 Fixed the \fItest_install_download_cache_argument_in_resulting_command\fP to accommodate introduced cache directory argument fixes and renamed it to \fItest_install_download_cache_dir_arguments_in_resulting_command\fP\&. .IP \(bu 2 9d0f94eeba Fixed unnecessary API changes introduced with suggested changes. .UNINDENT @@ -523568,7 +525477,7 @@ ef1ff38f8d Merge branch \(aq2016.3\(aq into \(aq2016.11\(aq 116201f345 Merge pull request \fI\%#40059\fP from terminalmage/fix\-virtualenv\-traceback .INDENT 2.0 .IP \(bu 2 -e3cfd29d6b Fix traceback when virtualenv.managed is invoked with nonexistant user +e3cfd29d6b Fix traceback when virtualenv.managed is invoked with nonexistent user .UNINDENT .IP \(bu 2 a01b52b9a3 Merge pull request \fI\%#40090\fP from rallytime/bp\-40056 @@ -523616,9 +525525,9 @@ a1f8b49bd1 update 2016.3.6 release notes with additional PR\(aqs 8dcffc7751 Merge pull request \fI\%#40018\fP from meaksh/2016.3\-handling\-timeouts\-for\-manage.up\-runner .INDENT 2.0 .IP \(bu 2 -9f5c3b7dcd Allows to set custom timeouts for \(aqmanage.up\(aq and \(aqmanage.status\(aq +9f5c3b7dcd Allows one to set custom timeouts for \(aqmanage.up\(aq and \(aqmanage.status\(aq .IP \(bu 2 -2102d9c75c Allows to set \(aqtimeout\(aq and \(aqgather_job_timeout\(aq via kwargs +2102d9c75c Allows one to set \(aqtimeout\(aq and \(aqgather_job_timeout\(aq via kwargs .UNINDENT .IP \(bu 2 22fc5299a2 Merge pull request \fI\%#40038\fP from velom/fix\-pip\-freeze\-parsing @@ -523657,9 +525566,9 @@ a1f8b49bd1 update 2016.3.6 release notes with additional PR\(aqs .IP \(bu 2 e73a1d0e54 Merge pull request \fI\%#40072\fP from meaksh/2016.11\-handling\-timeouts\-for\-manage.up\-runner .IP \(bu 2 -40246d3723 Allows to set custom timeouts for \(aqmanage.up\(aq and \(aqmanage.status\(aq +40246d3723 Allows one to set custom timeouts for \(aqmanage.up\(aq and \(aqmanage.status\(aq .IP \(bu 2 -ad232fdc01 Allows to set \(aqtimeout\(aq and \(aqgather_job_timeout\(aq via kwargs +ad232fdc01 Allows one to set \(aqtimeout\(aq and \(aqgather_job_timeout\(aq via kwargs .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#40045\fP: (\fI\%terminalmage\fP) Fix error when chhome is invoked by user.present state in Windows @@ -523716,7 +525625,7 @@ f3e7e4fb2a Add 2016.3.6 Release Notes 0c61d064ad Merge pull request \fI\%#39980\fP from vutny/cmd\-run\-state\-bg .INDENT 2.0 .IP \(bu 2 -a81dc9dfc1 [2016.3] Allow to use \fIbg\fP kwarg for \fIcmd.run\fP state function +a81dc9dfc1 [2016.3] Allow using \fIbg\fP kwarg for \fIcmd.run\fP state function .UNINDENT .IP \(bu 2 b042484455 Merge pull request \fI\%#39994\fP from rallytime/ulimits\-dockerng\-version @@ -524126,15 +526035,15 @@ ff6f63e9dd Checking instance exists in master._get_cached_minion_data when cache 6539dbdbca Do not use name resolving for \-\-notrim check .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#38231\fP: (\fI\%tjuup\fP) Typo: salt\-key deleteed (refs: \fI\%#39799\fP) +\fBISSUE\fP \fI\%#38231\fP: (\fI\%tjuup\fP) Typo: salt\-key deleted (refs: \fI\%#39799\fP) .IP \(bu 2 -\fBPR\fP \fI\%#39799\fP: (\fI\%Ch3LL\fP) Fix deleteed message when key is deleted +\fBPR\fP \fI\%#39799\fP: (\fI\%Ch3LL\fP) Fix deleted message when key is deleted @ \fI2017\-03\-03 05:17:43 UTC\fP .INDENT 2.0 .IP \(bu 2 d0440e2a2a Merge pull request \fI\%#39799\fP from Ch3LL/fix_salt_key_msg .IP \(bu 2 -8346682cf7 Fix deleteed message when key is deleted +8346682cf7 Fix deleted message when key is deleted .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#38962\fP: (\fI\%gstachowiak\fP) Broken /jobs in salt\-api in salt 2016.11.1 (Carbon) (refs: \fI\%#39472\fP) @@ -524403,13 +526312,13 @@ e63cbbaab9 Merge pull request \fI\%#39653\fP from cachedout/26_odict .IP \(bu 2 \fBISSUE\fP \fI\%#38836\fP: (\fI\%toanctruong\fP) file.managed with S3 Source errors out with obscure message (refs: \fI\%#39609\fP, \fI\%#39589\fP) .IP \(bu 2 -\fBPR\fP \fI\%#39609\fP: (\fI\%gtmanfred\fP) intialize the Client stuff in FSClient +\fBPR\fP \fI\%#39609\fP: (\fI\%gtmanfred\fP) initialize the Client stuff in FSClient @ \fI2017\-02\-24 18:50:55 UTC\fP .INDENT 2.0 .IP \(bu 2 0bc6027e68 Merge pull request \fI\%#39609\fP from gtmanfred/2016.11 .IP \(bu 2 -0820620ef8 intialize the Client stuff in FSClient +0820620ef8 initialize the Client stuff in FSClient .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#39615\fP: (\fI\%skizunov\fP) Bonjour/Avahi beacons: Make sure TXT record length is valid @@ -524778,7 +526687,11 @@ Total Issue References: \fB23\fP .IP \(bu 2 Total PR References: \fB80\fP .IP \(bu 2 -Contributors: \fB32\fP (\fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Enquier\fP, \fI\%SolarisYan\fP, \fI\%UtahDave\fP, \fI\%alexproca\fP, \fI\%benediktwerner\fP, \fI\%bobrik\fP, \fI\%brd\fP, \fI\%cachedout\fP, \fI\%clinta\fP, \fI\%corywright\fP, \fI\%cro\fP, \fI\%danlsgiga\fP, \fI\%drawsmcgraw\fP, \fI\%ezh\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jf\fP, \fI\%jleproust\fP, \fI\%lorengordon\fP, \fI\%nevins\-b\fP, \fI\%oeuftete\fP, \fI\%peter\-funktionIT\fP, \fI\%rallytime\fP, \fI\%rkgrunt\fP, \fI\%senthilkumar\-e\fP, \fI\%sjorge\fP, \fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP) +Contributors: \fB32\fP (\fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Enquier\fP, \fI\%SolarisYan\fP, +\fI\%UtahDave\fP, \fI\%alexproca\fP, \fI\%benediktwerner\fP, \fI\%bobrik\fP, \fI\%brd\fP, \fI\%cachedout\fP, \fI\%clinta\fP, +\fI\%corywright\fP, \fI\%cro\fP, \fI\%danlsgiga\fP, \fI\%drawsmcgraw\fP, \fI\%ezh\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jf\fP, +\fI\%jleproust\fP, \fI\%lorengordon\fP, \fI\%nevins\-b\fP, \fI\%oeuftete\fP, \fI\%peter\-funktionIT\fP, \fI\%rallytime\fP, +\fI\%rkgrunt\fP, \fI\%senthilkumar\-e\fP, \fI\%sjorge\fP, \fI\%skizunov\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP) .UNINDENT .SS Patched Packages .sp @@ -525671,7 +527584,14 @@ Total Issue References: \fB58\fP .IP \(bu 2 Total PR References: \fB153\fP .IP \(bu 2 -Contributors: \fB49\fP (\fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%Enquier\fP, \fI\%F30\fP, \fI\%Foxlik\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%abednarik\fP, \fI\%alex\-zel\fP, \fI\%arif\-ali\fP, \fI\%automate\-solutions\fP, \fI\%axmetishe\fP, \fI\%bdrung\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%darenjacobs\fP, \fI\%dmurphy18\fP, \fI\%dschaller\fP, \fI\%epcim\fP, \fI\%garethgreenaway\fP, \fI\%github\-abcde\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jettero\fP, \fI\%jmarinaro\fP, \fI\%kiorky\fP, \fI\%lomeroe\fP, \fI\%lordcirth\fP, \fI\%lorengordon\fP, \fI\%lubyou\fP, \fI\%mcalmer\fP, \fI\%moio\fP, \fI\%onlyanegg\fP, \fI\%peter\-funktionIT\fP, \fI\%pkazmierczak\fP, \fI\%pprkut\fP, \fI\%rallytime\fP, \fI\%ricohouse\fP, \fI\%seanjnkns\fP, \fI\%sebw\fP, \fI\%skizunov\fP, \fI\%svinota\fP, \fI\%t0fik\fP, \fI\%terminalmage\fP, \fI\%tmeneau\fP, \fI\%tonybaloney\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP, \fI\%yannj\-fr\fP) +Contributors: \fB49\fP (\fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%Enquier\fP, \fI\%F30\fP, \fI\%Foxlik\fP, \fI\%The\-Loeki\fP, +\fI\%UtahDave\fP, \fI\%abednarik\fP, \fI\%alex\-zel\fP, \fI\%arif\-ali\fP, \fI\%automate\-solutions\fP, \fI\%axmetishe\fP, +\fI\%bdrung\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%darenjacobs\fP, \fI\%dmurphy18\fP, \fI\%dschaller\fP, \fI\%epcim\fP, +\fI\%garethgreenaway\fP, \fI\%github\-abcde\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jettero\fP, \fI\%jmarinaro\fP, \fI\%kiorky\fP, +\fI\%lomeroe\fP, \fI\%lordcirth\fP, \fI\%lorengordon\fP, \fI\%lubyou\fP, \fI\%mcalmer\fP, \fI\%moio\fP, \fI\%onlyanegg\fP, +\fI\%peter\-funktionIT\fP, \fI\%pkazmierczak\fP, \fI\%pprkut\fP, \fI\%rallytime\fP, \fI\%ricohouse\fP, \fI\%seanjnkns\fP, +\fI\%sebw\fP, \fI\%skizunov\fP, \fI\%svinota\fP, \fI\%t0fik\fP, \fI\%terminalmage\fP, \fI\%tmeneau\fP, \fI\%tonybaloney\fP, +\fI\%twangboy\fP, \fI\%whiteinge\fP, \fI\%yannj\-fr\fP) .UNINDENT .SS Changelog for v2016.11.5..v2016.11.6 .sp @@ -525890,7 +527810,9 @@ aacf9f0a44 fix maximum recursion depth exceeded .IP \(bu 2 687872a488 Lint .IP \(bu 2 -dadf4b851c Add documentation to the example master and minion configuration files. Move minion event signing to a saner place. Enable dropping messages when signature does not verify or when minion is not adding the signature to its payloads. +dadf4b851c Add documentation to the example master and minion configuration files. Move +minion event signing to a saner place. Enable dropping messages when signature does not +verify or when minion is not adding the signature to its payloads. .IP \(bu 2 e44673cdae Add caching of key. .IP \(bu 2 @@ -526209,7 +528131,7 @@ d3ce7bf05f Fix pkgrepo.managed always return changes for test=true 1592687294 Document aptpkg architectures parameter .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#41478\fP: (\fI\%jf\fP) security / information leak with consul pillar when subsitution values are not present (refs: \fI\%#41530\fP) +\fBISSUE\fP \fI\%#41478\fP: (\fI\%jf\fP) security / information leak with consul pillar when substitution values are not present (refs: \fI\%#41530\fP) .IP \(bu 2 \fBPR\fP \fI\%#41530\fP: (\fI\%gtmanfred\fP) Set default for consul_pillar to None @ \fI2017\-06\-08 18:13:15 UTC\fP @@ -526290,7 +528212,7 @@ fda41ede76 Updating result values to be None for test cases. 53bca96328 Update __init__.py .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#41552\fP: (\fI\%Enquier\fP) Adding logic so that update_floatingip can dissassociate floatingip\(aqs +\fBPR\fP \fI\%#41552\fP: (\fI\%Enquier\fP) Adding logic so that update_floatingip can disassociate floatingip\(aqs @ \fI2017\-06\-06 18:25:56 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -526298,7 +528220,7 @@ fda41ede76 Updating result values to be None for test cases. .IP \(bu 2 aeed51c1e3 Adding port=None default and documentation .IP \(bu 2 -fcce05e1e4 Adding logic so that update_floatingip can dissassociate floatingip\(aqs Previously update_floatingip would cause an error if port is set to None. +fcce05e1e4 Adding logic so that update_floatingip can disassociate floatingip\(aqs Previously update_floatingip would cause an error if port is set to None. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#41569\fP: (\fI\%gtmanfred\fP) Check all entries in result @@ -526320,7 +528242,15 @@ e2a4d5e1e2 Check all entries in result .IP \(bu 2 d9546c6283 Merge pull request \fI\%#41599\fP from garethgreenaway/41540_fixes_to_archive_module .IP \(bu 2 -66a136e6d8 Fixing issues raised in \fI\%#41540\fP when a zip file is created on a Windows system. The issue has two parts, first directories that end up in the archive end up in the results of aarchive.list twice as they show up as both files and directories because of the logic to handle the fact that Windows doesn\(aqt mark them as directories. This issue shows up when an extraction is run a second time since the module verified the file types and the subdirectory is not a file. The second issue is related to permissions, if Salt is told to extract permissions (which is the default) then the directory and files end up being unreadable since the permissions are not available. This change sets the permissions to what the default umask for the user running Salt is. +66a136e6d8 Fixing issues raised in \fI\%#41540\fP when a zip file is created on a Windows system. +The issue has two parts, first directories that end up in the archive end up in the results of +aarchive.list twice as they show up as both files and directories because of the logic to +handle the fact that Windows doesn\(aqt mark them as directories. This issue shows up when an +extraction is run a second time since the module verified the file types and the subdirectory +is not a file. The second issue is related to permissions, if Salt is told to extract +permissions (which is the default) then the directory and files end up being unreadable since +the permissions are not available. This change sets the permissions to what the default umask +for the user running Salt is. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#40950\fP: (\fI\%idokaplan\fP) Import certificate (refs: \fI\%#41453\fP, \fI\%#41383\fP) @@ -526338,7 +528268,7 @@ d146fd029c Update win_pki.py ef8e3ef569 Update win_pki.py .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#41557\fP: (\fI\%dmurphy18\fP) Add symbolic link for salt\-proxy service similar to other serivce files +\fBPR\fP \fI\%#41557\fP: (\fI\%dmurphy18\fP) Add symbolic link for salt\-proxy service similar to other service files @ \fI2017\-06\-06 17:13:52 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -526636,7 +528566,7 @@ c93f112c9b Updating Nova Module to include use_keystone Auth .IP \(bu 2 66ab1e5184 Re\-adding neutron dependency check .IP \(bu 2 -cce07eefc2 Updating Neutron module to suport KeystoneAuth +cce07eefc2 Updating Neutron module to support KeystoneAuth .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#34460\fP: (\fI\%Ch3LL\fP) Receive an error when using salt\-api to call a runner (refs: \fI\%#41409\fP) @@ -526657,7 +528587,9 @@ c11bcd0d12 Changing the approaching and including an except for the action socke .IP \(bu 2 3f950596f4 Fixing lint issues. .IP \(bu 2 -f3a6531a69 On occasion an exception will occur which results in the event not returning properly, even though the wire_bytes is correctly populated. In this situation, we log to trace and continue. \fI\%#34460\fP +f3a6531a69 On occasion an exception will occur which results in the event not returning +properly, even though the wire_bytes is correctly populated. In this situation, we log to trace +and continue. \fI\%#34460\fP .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#41421\fP: (\fI\%UtahDave\fP) Correct doc to actually blacklist a module @@ -526848,7 +528780,9 @@ cfd8eb7a87 Set DescribeKeyPairs back to KeyName.1 according to documentation .IP \(bu 2 5039fe12fb Removing chdir as it is no needed with this change .IP \(bu 2 -4550c3ce49 Updating the code that is pulling in the list of cached minions to use self.cache.list instead of relying on checking the local file system, which only works for the localfs cache method. \fI\%#40748\fP +4550c3ce49 Updating the code that is pulling in the list of cached minions to use +self.cache.list instead of relying on checking the local file system, which only works for the +localfs cache method. \fI\%#40748\fP .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#38894\fP: (\fI\%amendlik\fP) salt.runner and salt.wheel ignore test=True (refs: \fI\%#41309\fP, \fI\%#41611\fP) @@ -526868,7 +528802,7 @@ e1a88e8bf7 Allowing test=True to be passed for salt.runner and salt.wheel when u @ \fI2017\-05\-19 18:25:00 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#41307\fP: (\fI\%lomeroe\fP) properly pack/unpack the verison numbers into a number (refs: \fI\%#41319\fP) +\fBPR\fP \fI\%#41307\fP: (\fI\%lomeroe\fP) properly pack/unpack the version numbers into a number (refs: \fI\%#41319\fP) .IP \(bu 2 140b0427e1 Merge pull request \fI\%#41319\fP from lomeroe/bp_41307 .IP \(bu 2 @@ -527366,7 +529300,16 @@ Total Issue References: \fB68\fP .IP \(bu 2 Total PR References: \fB202\fP .IP \(bu 2 -Contributors: \fB61\fP (\fI\%AFriemann\fP, \fI\%Ch3LL\fP, \fI\%CorvinM\fP, \fI\%Da\-Juan\fP, \fI\%DmitryKuzmenko\fP, \fI\%UtahDave\fP, \fI\%abulford\fP, \fI\%amalleo25\fP, \fI\%amendlik\fP, \fI\%aneeshusa\fP, \fI\%aogier\fP, \fI\%arount\fP, \fI\%arthurlogilab\fP, \fI\%astronouth7303\fP, \fI\%binocvlar\fP, \fI\%blarghmatey\fP, \fI\%cachedout\fP, \fI\%clem\-compilatio\fP, \fI\%corywright\fP, \fI\%cri\-epita\fP, \fI\%damon\-atkins\fP, \fI\%davidjb\fP, \fI\%dglloyd\fP, \fI\%dmurphy18\fP, \fI\%ferringb\fP, \fI\%garethgreenaway\fP, \fI\%gdubroeucq\fP, \fI\%gilbsgilbs\fP, \fI\%goten4\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jagguli\fP, \fI\%kevinanderson1\fP, \fI\%kojiromike\fP, \fI\%kstreee\fP, \fI\%leeclemens\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%lubyou\fP, \fI\%mcarlton00\fP, \fI\%meaksh\fP, \fI\%morganwillcock\fP, \fI\%nhavens\fP, \fI\%pabloh007\fP, \fI\%rallytime\fP, \fI\%remijouannet\fP, \fI\%renner\fP, \fI\%root360\-AndreasUlm\fP, \fI\%s\-sebastian\fP, \fI\%sarcasticadmin\fP, \fI\%sbojarski\fP, \fI\%shengis\fP, \fI\%tdutrion\fP, \fI\%terminalmage\fP, \fI\%toanju\fP, \fI\%twangboy\fP, \fI\%ushmodin\fP, \fI\%viktorkrivak\fP, \fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%xiaoanyunfei\fP) +Contributors: \fB61\fP (\fI\%AFriemann\fP, \fI\%Ch3LL\fP, \fI\%CorvinM\fP, \fI\%Da\-Juan\fP, \fI\%DmitryKuzmenko\fP, +\fI\%UtahDave\fP, \fI\%abulford\fP, \fI\%amalleo25\fP, \fI\%amendlik\fP, \fI\%aneeshusa\fP, \fI\%aogier\fP, \fI\%arount\fP, +\fI\%arthurlogilab\fP, \fI\%astronouth7303\fP, \fI\%binocvlar\fP, \fI\%blarghmatey\fP, \fI\%cachedout\fP, +\fI\%clem\-compilatio\fP, \fI\%corywright\fP, \fI\%cri\-epita\fP, \fI\%damon\-atkins\fP, \fI\%davidjb\fP, \fI\%dglloyd\fP, +\fI\%dmurphy18\fP, \fI\%ferringb\fP, \fI\%garethgreenaway\fP, \fI\%gdubroeucq\fP, \fI\%gilbsgilbs\fP, \fI\%goten4\fP, +\fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jagguli\fP, \fI\%kevinanderson1\fP, \fI\%kojiromike\fP, \fI\%kstreee\fP, \fI\%leeclemens\fP, +\fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%lubyou\fP, \fI\%mcarlton00\fP, \fI\%meaksh\fP, \fI\%morganwillcock\fP, \fI\%nhavens\fP, +\fI\%pabloh007\fP, \fI\%rallytime\fP, \fI\%remijouannet\fP, \fI\%renner\fP, \fI\%root360\-AndreasUlm\fP, \fI\%s\-sebastian\fP, +\fI\%sarcasticadmin\fP, \fI\%sbojarski\fP, \fI\%shengis\fP, \fI\%tdutrion\fP, \fI\%terminalmage\fP, \fI\%toanju\fP, +\fI\%twangboy\fP, \fI\%ushmodin\fP, \fI\%viktorkrivak\fP, \fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%xiaoanyunfei\fP) .UNINDENT .SS Security Fix .sp @@ -527445,7 +529388,7 @@ b4c689dff5 Merge pull request \fI\%#43191\fP from viktorkrivak/fix\-apache\-conf .IP \(bu 2 c15bcbe1cc Merge remote\-tracking branch \(aqupstream/2016.11\(aq into fix\-apache\-config\-multi\-entity .IP \(bu 2 -4164047951 Fix apache.config with multiple statement At this moment when you post more than one statement in config only last is used. Also file is rewrited multiple times until last statement is written. Example: salt \(aq*\(aq apache.config /etc/httpd/conf.d/ports.conf config="[{\(aqListen\(aq: \(aq8080\(aq}, {\(aqProxy\(aq: "Something"}]" Ends only with Proxy Something and ignore Listen 8080, This patch fix this issue. +4164047951 Fix apache.config with multiple statement At this moment when you post more than one statement in config only last is used. Also file is rewrote multiple times until last statement is written. Example: salt \(aq*\(aq apache.config /etc/httpd/conf.d/ports.conf config="[{\(aqListen\(aq: \(aq8080\(aq}, {\(aqProxy\(aq: "Something"}]" Ends only with Proxy Something and ignore Listen 8080, This patch fix this issue. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#42279\fP: (\fI\%dafyddj\fP) win_lgpo matches multiple policies due to startswith() (refs: \fI\%#43154\fP, \fI\%#43116\fP) @@ -528507,13 +530450,13 @@ d9df97e5a3 Merge pull request \fI\%#42424\fP from goten4/2016.11 8c048403d7 Detect Server OS with a desktop release name .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#42356\fP: (\fI\%meaksh\fP) Allow to check whether a function is available on the AliasesLoader wrapper +\fBPR\fP \fI\%#42356\fP: (\fI\%meaksh\fP) Allow checking whether a function is available on the AliasesLoader wrapper @ \fI2017\-07\-19 16:56:41 UTC\fP .INDENT 2.0 .IP \(bu 2 0a72e56f6b Merge pull request \fI\%#42356\fP from meaksh/2016.11\-AliasesLoader\-wrapper\-fix .IP \(bu 2 -915d94219e Allow to check whether a function is available on the AliasesLoader wrapper +915d94219e Allow checking whether a function is available on the AliasesLoader wrapper .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#42368\fP: (\fI\%twangboy\fP) Remove build and dist directories before install (2016.11) @@ -529258,7 +531201,7 @@ c337d52d0c Fix test data for test_get_serial, and a typo .IP \(bu 2 7f6961378e test and lint fixes .IP \(bu 2 -8ee48432f4 Suppress output of crypt context and be more specifc with whitespace vs. serial +8ee48432f4 Suppress output of crypt context and be more specific with whitespace vs. serial .IP \(bu 2 61f817d172 Match serials based on output position (fix for non\-English languages) .UNINDENT @@ -529311,7 +531254,15 @@ Total Issue References: \fB60\fP .IP \(bu 2 Total PR References: \fB167\fP .IP \(bu 2 -Contributors: \fB54\fP (\fI\%Ch3LL\fP, \fI\%UtahDave\fP, \fI\%VertigoRay\fP, \fI\%akissa\fP, \fI\%aogier\fP, \fI\%arthtux\fP, \fI\%austinpapp\fP, \fI\%basepi\fP, \fI\%benediktwerner\fP, \fI\%bobrik\fP, \fI\%brejoc\fP, \fI\%cachedout\fP, \fI\%cetanu\fP, \fI\%corywright\fP, \fI\%creideiki\fP, \fI\%cro\fP, \fI\%cruscio\fP, \fI\%damon\-atkins\fP, \fI\%dayid\fP, \fI\%defanator\fP, \fI\%dereckson\fP, \fI\%dijit\fP, \fI\%doesitblend\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%gurubert\fP, \fI\%gvengel\fP, \fI\%jfindlay\fP, \fI\%johnj\fP, \fI\%jubrad\fP, \fI\%junovitch\fP, \fI\%lomeroe\fP, \fI\%lordcirth\fP, \fI\%lorengordon\fP, \fI\%mattLLVW\fP, \fI\%meaksh\fP, \fI\%moio\fP, \fI\%msummers42\fP, \fI\%mtkennerly\fP, \fI\%nicholasmhughes\fP, \fI\%oeuftete\fP, \fI\%rallytime\fP, \fI\%rasathus\fP, \fI\%roaldnefs\fP, \fI\%rossengeorgiev\fP, \fI\%seanjnkns\fP, \fI\%senthilkumar\-e\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%vernondcole\fP, \fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%whytewolf\fP) +Contributors: \fB54\fP (\fI\%Ch3LL\fP, \fI\%UtahDave\fP, \fI\%VertigoRay\fP, \fI\%akissa\fP, \fI\%aogier\fP, \fI\%arthtux\fP, +\fI\%austinpapp\fP, \fI\%basepi\fP, \fI\%benediktwerner\fP, \fI\%bobrik\fP, \fI\%brejoc\fP, \fI\%cachedout\fP, \fI\%cetanu\fP, +\fI\%corywright\fP, \fI\%creideiki\fP, \fI\%cro\fP, \fI\%cruscio\fP, \fI\%damon\-atkins\fP, \fI\%dayid\fP, \fI\%defanator\fP, +\fI\%dereckson\fP, \fI\%dijit\fP, \fI\%doesitblend\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%gurubert\fP, +\fI\%gvengel\fP, \fI\%jfindlay\fP, \fI\%johnj\fP, \fI\%jubrad\fP, \fI\%junovitch\fP, \fI\%lomeroe\fP, \fI\%lordcirth\fP, +\fI\%lorengordon\fP, \fI\%mattLLVW\fP, \fI\%meaksh\fP, \fI\%moio\fP, \fI\%msummers42\fP, \fI\%mtkennerly\fP, +\fI\%nicholasmhughes\fP, \fI\%oeuftete\fP, \fI\%rallytime\fP, \fI\%rasathus\fP, \fI\%roaldnefs\fP, \fI\%rossengeorgiev\fP, +\fI\%seanjnkns\fP, \fI\%senthilkumar\-e\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP, \fI\%vernondcole\fP, +\fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%whytewolf\fP) .UNINDENT .SS Windows Changes .SS \fBpkg\fP Execution Module\(ga @@ -529866,7 +531817,7 @@ ead3c569e1 Bump deprecation warnings from Oxygen to Fluorine .IP \(bu 2 998d714ee7 Merge pull request \fI\%#44517\fP from whytewolf/publish_port_doc_missing .IP \(bu 2 -4b5855283a missed one place where i didnt chanbge master_port from my copy to publish_port +4b5855283a missed one place where i didn\(aqt chanbge master_port from my copy to publish_port .IP \(bu 2 e4610baea5 update doc to have publish port .UNINDENT @@ -530113,7 +532064,7 @@ b65f4ea4ea switch salt\-jenkins over to saltstack .IP \(bu 2 cab54e34b5 Merge pull request \fI\%#44173\fP from twangboy/win_system_docs .IP \(bu 2 -8e111b413d Fix some of the wording and grammer errors +8e111b413d Fix some of the wording and grammar errors .IP \(bu 2 a12bc5ae41 Use google style docstrings .UNINDENT @@ -530655,13 +532606,13 @@ f8b3fa9da1 Merge branch \(aq2016.11\(aq into fix\-pylint\-deprecation\-warnings .IP \(bu 2 \fBISSUE\fP \fI\%#40311\fP: (\fI\%cralston0\fP) \-\-hide\-timeout used with \-\-output json \-\-static produces unparseable JSON (refs: \fI\%#43772\fP) .IP \(bu 2 -\fBPR\fP \fI\%#43772\fP: (\fI\%gtmanfred\fP) dont print Minion not responding with quiet +\fBPR\fP \fI\%#43772\fP: (\fI\%gtmanfred\fP) don\(aqt print Minion not responding with quiet @ \fI2017\-09\-27 15:39:18 UTC\fP .INDENT 2.0 .IP \(bu 2 1a8cc60bb4 Merge pull request \fI\%#43772\fP from gtmanfred/2016.11 .IP \(bu 2 -0194c60960 dont print Minion not responding with quiet +0194c60960 don\(aqt print Minion not responding with quiet .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#43747\fP: (\fI\%rallytime\fP) Add GPG Verification section to Contributing Docs @@ -531758,7 +533709,10 @@ Total Issue References: \fB23\fP .IP \(bu 2 Total PR References: \fB58\fP .IP \(bu 2 -Contributors: \fB25\fP (\fI\%abednarik\fP, \fI\%amontalban\fP, \fI\%anlutro\fP, \fI\%babilen\fP, \fI\%cachedout\fP, \fI\%clburlison\fP, \fI\%danslimmon\fP, \fI\%eliasp\fP, \fI\%glomium\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%kev009\fP, \fI\%lomeroe\fP, \fI\%michalsuba\fP, \fI\%neil\-williamson\fP, \fI\%onorua\fP, \fI\%opdude\fP, \fI\%rallytime\fP, \fI\%sjorge\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%ticosax\fP, \fI\%tomlaredo\fP, \fI\%twangboy\fP, \fI\%zigarn\fP) +Contributors: \fB25\fP (\fI\%abednarik\fP, \fI\%amontalban\fP, \fI\%anlutro\fP, \fI\%babilen\fP, \fI\%cachedout\fP, +\fI\%clburlison\fP, \fI\%danslimmon\fP, \fI\%eliasp\fP, \fI\%glomium\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%kev009\fP, +\fI\%lomeroe\fP, \fI\%michalsuba\fP, \fI\%neil\-williamson\fP, \fI\%onorua\fP, \fI\%opdude\fP, \fI\%rallytime\fP, \fI\%sjorge\fP, +\fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%ticosax\fP, \fI\%tomlaredo\fP, \fI\%twangboy\fP, \fI\%zigarn\fP) .UNINDENT .SS Final Release of Debian 7 Packages .sp @@ -531983,7 +533937,7 @@ e7de99dd0e Correct silly mistake .IP \(bu 2 \fBPR\fP \fI\%#33861\fP: (\fI\%cachedout\fP) Set master and cloud to log level warning .IP \(bu 2 -\fBPR\fP \fI\%#33821\fP: (\fI\%cachedout\fP) Restore deafault log level to warning (refs: \fI\%#33861\fP) +\fBPR\fP \fI\%#33821\fP: (\fI\%cachedout\fP) Restore default log level to warning (refs: \fI\%#33861\fP) .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#33698\fP: (\fI\%opdude\fP) Vsphere fixes @@ -532059,13 +534013,13 @@ f546e47552 Merge pull request \fI\%#33851\fP from ticosax/fix\-entrypoint\-suppo .IP \(bu 2 \fBISSUE\fP \fI\%#33818\fP: (\fI\%saltuser\fP) 2016.3.0 minion default log level INFO (refs: \fI\%#33821\fP, \fI\%#33861\fP) .IP \(bu 2 -\fBPR\fP \fI\%#33821\fP: (\fI\%cachedout\fP) Restore deafault log level to warning (refs: \fI\%#33861\fP) +\fBPR\fP \fI\%#33821\fP: (\fI\%cachedout\fP) Restore default log level to warning (refs: \fI\%#33861\fP) @ \fI2016\-06\-07 16:51:46 UTC\fP .INDENT 2.0 .IP \(bu 2 3f6d06a060 Merge pull request \fI\%#33821\fP from cachedout/issue_33818 .IP \(bu 2 -52f1f77a38 Restore deafault log level to warning +52f1f77a38 Restore default log level to warning .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#33578\fP: (\fI\%ohauer\fP) 2016.3.0 FreeBSD Failed to load grains defined in grain file disks.disks in function , error: (refs: \fI\%#33604\fP, \fI\%#33767\fP) @@ -532520,7 +534474,7 @@ b906859fce Fix for \fI\%#33530\fP c738a0de76 fix a KeyError if group is provided but not user .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#33543\fP: (\fI\%arthurlogilab\fP) Thorium documentation is incorrectly formated and appears partially on docs.saltproject.io (refs: \fI\%#33550\fP) +\fBISSUE\fP \fI\%#33543\fP: (\fI\%arthurlogilab\fP) Thorium documentation is incorrectly formatted and appears partially on docs.saltproject.io (refs: \fI\%#33550\fP) .IP \(bu 2 \fBPR\fP \fI\%#33550\fP: (\fI\%jacobhammons\fP) Fixes display of thorium docs @ \fI2016\-05\-26 17:57:05 UTC\fP @@ -532635,7 +534589,7 @@ aa2bac3a0d Remove debugging .IP \(bu 2 9deb70fd8e jobs.exit_success() now works parsing the results of jobs.lookup_id() .IP \(bu 2 -7ba40c4f31 jobs.exit_success allow to check if a job has executed and exit successfully +7ba40c4f31 jobs.exit_success allow checking if a job has executed and exit successfully .UNINDENT .IP \(bu 2 70eb7b66f3 Merge pull request \fI\%#33487\fP from jtand/glance_doc_fixes @@ -532745,7 +534699,14 @@ Total Issue References: \fB66\fP .IP \(bu 2 Total PR References: \fB177\fP .IP \(bu 2 -Contributors: \fB52\fP (\fI\%Ch3LL\fP, \fI\%DarkKnightCZ\fP, \fI\%DmitryKuzmenko\fP, \fI\%Inveracity\fP, \fI\%abalashov\fP, \fI\%abednarik\fP, \fI\%adelcast\fP, \fI\%ajacoutot\fP, \fI\%amendlik\fP, \fI\%anlutro\fP, \fI\%aphor\fP, \fI\%artxki\fP, \fI\%bbinet\fP, \fI\%bensherman\fP, \fI\%cachedout\fP, \fI\%christoe\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%dmurphy18\fP, \fI\%dongweiming\fP, \fI\%eliasp\fP, \fI\%eradman\fP, \fI\%farcaller\fP, \fI\%garethgreenaway\fP, \fI\%glomium\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jacobhammons\fP, \fI\%jacobweinstock\fP, \fI\%jfindlay\fP, \fI\%jmacfar\fP, \fI\%jnhmcknight\fP, \fI\%justinta\fP, \fI\%l2ol33rt\fP, \fI\%lomeroe\fP, \fI\%meaksh\fP, \fI\%nulfox\fP, \fI\%opdude\fP, \fI\%peterdemin\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%secumod\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%themalkolm\fP, \fI\%ticosax\fP, \fI\%tmehlinger\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP) +Contributors: \fB52\fP (\fI\%Ch3LL\fP, \fI\%DarkKnightCZ\fP, \fI\%DmitryKuzmenko\fP, \fI\%Inveracity\fP, \fI\%abalashov\fP, +\fI\%abednarik\fP, \fI\%adelcast\fP, \fI\%ajacoutot\fP, \fI\%amendlik\fP, \fI\%anlutro\fP, \fI\%aphor\fP, \fI\%artxki\fP, \fI\%bbinet\fP, +\fI\%bensherman\fP, \fI\%cachedout\fP, \fI\%christoe\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%dmurphy18\fP, \fI\%dongweiming\fP, +\fI\%eliasp\fP, \fI\%eradman\fP, \fI\%farcaller\fP, \fI\%garethgreenaway\fP, \fI\%glomium\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, +\fI\%jacobhammons\fP, \fI\%jacobweinstock\fP, \fI\%jfindlay\fP, \fI\%jmacfar\fP, \fI\%jnhmcknight\fP, \fI\%justinta\fP, +\fI\%l2ol33rt\fP, \fI\%lomeroe\fP, \fI\%meaksh\fP, \fI\%nulfox\fP, \fI\%opdude\fP, \fI\%peterdemin\fP, \fI\%rallytime\fP, +\fI\%s0undt3ch\fP, \fI\%secumod\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%themalkolm\fP, +\fI\%ticosax\fP, \fI\%tmehlinger\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP) .UNINDENT .SS Returner Changes .INDENT 0.0 @@ -532943,7 +534904,7 @@ ebebfa647f Merge pull request \fI\%#34887\fP from rallytime/merge\-2016.3 .IP \(bu 2 fb223e1bd4 Invalidate the target cache very quickly (\fI\%#34862\fP) .IP \(bu 2 -1ca1367289 Fail git.latest states with uncommitted changes when force_reset=False (\fI\%#34869\fP) +1ca1367289 Fail git.latest states with uncomitted changes when force_reset=False (\fI\%#34869\fP) .IP \(bu 2 4f4381e5b9 Merge pull request \fI\%#34859\fP from cachedout/fix_wheel_test .INDENT 2.0 @@ -533222,7 +535183,7 @@ d949110993 Loop over updated keys in non recursive update .IP \(bu 2 \fBISSUE\fP \fI\%saltstack/salt#34630\fP: (\fI\%bdrung\fP) Spelling errors (refs: \fI\%#34756\fP, \fI\%#34722\fP) .IP \(bu 2 -\fBISSUE\fP \fI\%saltstack/salt#33923\fP: (\fI\%pavankumar2203\fP) Salt module certutil install doesnt work (refs: \fI\%#34756\fP) +\fBISSUE\fP \fI\%saltstack/salt#33923\fP: (\fI\%pavankumar2203\fP) Salt module certutil install doesn\(aqt work (refs: \fI\%#34756\fP) .INDENT 2.0 .IP \(bu 2 \fBPR\fP \fI\%#34756\fP: (\fI\%jacobhammons\fP) Rebuild man pages @@ -534830,7 +536791,7 @@ d3198ea538 \fIstates.postgres_privileges\fP expects a real list, not a comma\-se 887a415138 Adds new Understanding Jinja topic, and fixes several Jinja doc issues. Removes the "Full list of builtin ..." from each module reference list, leaving just the module type for scanability. .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#33900\fP: (\fI\%amendlik\fP) Document sudo policy for gitfs post\-recieve hook +\fBPR\fP \fI\%#33900\fP: (\fI\%amendlik\fP) Document sudo policy for gitfs post\-receive hook @ \fI2016\-06\-14 01:04:35 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -534838,7 +536799,7 @@ a400f6a6c3 Merge pull request \fI\%#33900\fP from amendlik/gitfs\-hook\-doc .IP \(bu 2 b4a28e2684 Add clarifying documentation about the need for sudo in the git hook .IP \(bu 2 -1046279cb7 Document sudo policy for gitfs post\-recieve hook +1046279cb7 Document sudo policy for gitfs post\-receive hook .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#33980\fP: (\fI\%twangboy\fP) Use full path to python.exe @@ -534985,7 +536946,7 @@ d622133a49 The jid load comes in directly, not as \(aqload\(aq key. Should retur .IP \(bu 2 2cf787d4ba 2016.3.0 known issues update .IP \(bu 2 -\fBPR\fP \fI\%#33908\fP: (\fI\%ticosax\fP) [boto_lambda] handle ommitted Permissions parameter +\fBPR\fP \fI\%#33908\fP: (\fI\%ticosax\fP) [boto_lambda] handle omitted Permissions parameter .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#33575\fP: (\fI\%anlutro\fP) File states seem slower in 2016.3, especially on first cache retrieval (refs: \fI\%#33896\fP) @@ -535038,7 +536999,12 @@ Total Issue References: \fB26\fP .IP \(bu 2 Total PR References: \fB115\fP .IP \(bu 2 -Contributors: \fB36\fP (\fI\%The\-Loeki\fP, \fI\%abednarik\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%deniszh\fP, \fI\%dkruger\fP, \fI\%dmurphy18\fP, \fI\%eliasp\fP, \fI\%farcaller\fP, \fI\%galet\fP, \fI\%gtmanfred\fP, \fI\%hu\-dabao\fP, \fI\%isbm\fP, \fI\%jacobhammons\fP, \fI\%jacobweinstock\fP, \fI\%jfindlay\fP, \fI\%justinta\fP, \fI\%kstreee\fP, \fI\%lubyou\fP, \fI\%markuskramerIgitt\fP, \fI\%meaksh\fP, \fI\%miihael\fP, \fI\%mzupan\fP, \fI\%nishigori\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%skizunov\fP, \fI\%tankywoo\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%theredcat\fP, \fI\%ticosax\fP, \fI\%tonybaloney\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP) +Contributors: \fB36\fP (\fI\%The\-Loeki\fP, \fI\%abednarik\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%deniszh\fP, \fI\%dkruger\fP, +\fI\%dmurphy18\fP, \fI\%eliasp\fP, \fI\%farcaller\fP, \fI\%galet\fP, \fI\%gtmanfred\fP, \fI\%hu\-dabao\fP, \fI\%isbm\fP, +\fI\%jacobhammons\fP, \fI\%jacobweinstock\fP, \fI\%jfindlay\fP, \fI\%justinta\fP, \fI\%kstreee\fP, \fI\%lubyou\fP, +\fI\%markuskramerIgitt\fP, \fI\%meaksh\fP, \fI\%miihael\fP, \fI\%mzupan\fP, \fI\%nishigori\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, +\fI\%skizunov\fP, \fI\%tankywoo\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%theredcat\fP, \fI\%ticosax\fP, \fI\%tonybaloney\fP, +\fI\%twangboy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP) .UNINDENT .SS Known Issues .sp @@ -535630,7 +537596,7 @@ a651962e95 Merge branch \(aq2015.8\(aq into \(aq2016.3\(aq .IP \(bu 2 8a5b47b5d7 Collect all error data from the wfuncs call .IP \(bu 2 -11864c31b7 supress a stack trace to show clean ssh error +11864c31b7 suppress a stack trace to show clean ssh error .IP \(bu 2 9fbfa282fa wow this solves an issue! .UNINDENT @@ -535881,7 +537847,7 @@ f004b831d2 Merge pull request \fI\%#35178\fP from cro/proxy_cache_fix2 f0961e741e Merge with 2016.3 .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#35234\fP: (\fI\%Sylvain303\fP) Bug: module disk.wipe dont wipe the filesystem information (refs: \fI\%#35253\fP) +\fBISSUE\fP \fI\%#35234\fP: (\fI\%Sylvain303\fP) Bug: module disk.wipe don\(aqt wipe the filesystem information (refs: \fI\%#35253\fP) .IP \(bu 2 \fBPR\fP \fI\%#35259\fP: (\fI\%cachedout\fP) Fixup 35253 @ \fI2016\-08\-06 21:59:48 UTC\fP @@ -535896,7 +537862,7 @@ f0961e741e Merge with 2016.3 6714e8f386 Fix mock call in disk wipe test .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#35234\fP: (\fI\%Sylvain303\fP) Bug: module disk.wipe dont wipe the filesystem information (refs: \fI\%#35253\fP) +\fBISSUE\fP \fI\%#35234\fP: (\fI\%Sylvain303\fP) Bug: module disk.wipe don\(aqt wipe the filesystem information (refs: \fI\%#35253\fP) .IP \(bu 2 \fBPR\fP \fI\%#35253\fP: (\fI\%abednarik\fP) Fix disk.wipe missing option. (refs: \fI\%#35259\fP) @ \fI2016\-08\-06 21:55:01 UTC\fP @@ -536025,7 +537991,7 @@ bf04bd3316 Merge pull request \fI\%#35133\fP from rallytime/merge\-2016.3 .IP \(bu 2 e1fcb8311d Put pkg.latest_version in try/except structure Move refreshed or refresh to different spot (just for code tidyness) .IP \(bu 2 -e0b6261659 changed name of varibale \(aqrefreshed\(aq to \(aqwas_refreshed\(aq +e0b6261659 changed name of variable \(aqrefreshed\(aq to \(aqwas_refreshed\(aq .IP \(bu 2 340110b4b4 Move check for rtag to outermost\-nesting in function .IP \(bu 2 @@ -536068,7 +538034,7 @@ dd91006ed7 Merge pull request \fI\%#35120\fP from kstreee/fix\-missing\-first\-s .IP \(bu 2 77b1f43b0d Merge pull request \fI\%#35110\fP from hu\-dabao/master\-check\-lighter .IP \(bu 2 -3a3b66e27d dont return job status back to master for master_alive and master_failback schedules +3a3b66e27d don\(aqt return job status back to master for master_alive and master_failback schedules .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#35104\fP: (\fI\%rallytime\fP) [2016.3] Merge forward from 2015.8 to 2016.3 @@ -536284,7 +538250,18 @@ Total Issue References: \fB119\fP .IP \(bu 2 Total PR References: \fB374\fP .IP \(bu 2 -Contributors: \fB80\fP (\fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%DavidWittman\fP, \fI\%DmitryKuzmenko\fP, \fI\%Jlin317\fP, \fI\%Kimamisa\fP, \fI\%UtahDave\fP, \fI\%aaronm\-cloudtek\fP, \fI\%abednarik\fP, \fI\%ahammond\fP, \fI\%alertedsnake\fP, \fI\%alexander\-bauer\fP, \fI\%amontalban\fP, \fI\%basepi\fP, \fI\%bl4ckcontact\fP, \fI\%bx2\fP, \fI\%cachedout\fP, \fI\%clarkperkins\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%damon\-atkins\fP, \fI\%danlsgiga\fP, \fI\%darkalia\fP, \fI\%dmurphy18\fP, \fI\%do3meli\fP, \fI\%edhgoose\fP, \fI\%efficks\fP, \fI\%eliasp\fP, \fI\%eradman\fP, \fI\%fix7\fP, \fI\%galet\fP, \fI\%goestin\fP, \fI\%gtmanfred\fP, \fI\%hrumph\fP, \fI\%hu\-dabao\fP, \fI\%isbm\fP, \fI\%jackywu\fP, \fI\%jacobhammons\fP, \fI\%jbonachera\fP, \fI\%jf\fP, \fI\%jfindlay\fP, \fI\%jizhilong\fP, \fI\%justinta\fP, \fI\%kstreee\fP, \fI\%l2ol33rt\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%maximeguillet\fP, \fI\%meaksh\fP, \fI\%mikeadamz\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%mrproper\fP, \fI\%multani\fP, \fI\%nvtkaszpir\fP, \fI\%oba11\fP, \fI\%onorua\fP, \fI\%opdude\fP, \fI\%orymate\fP, \fI\%oz123\fP, \fI\%pass\-by\-value\fP, \fI\%pbdeuchler\fP, \fI\%rallytime\fP, \fI\%roosri\fP, \fI\%silenius\fP, \fI\%skizunov\fP, \fI\%slinn0\fP, \fI\%stanislavb\fP, \fI\%swiftgist\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%theredcat\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%xbglowx\fP, \fI\%xiaoanyunfei\fP, \fI\%yhekma\fP) +Contributors: \fB80\fP (\fI\%BenoitKnecht\fP, \fI\%Ch3LL\fP, \fI\%DavidWittman\fP, \fI\%DmitryKuzmenko\fP, \fI\%Jlin317\fP, +\fI\%Kimamisa\fP, \fI\%UtahDave\fP, \fI\%aaronm\-cloudtek\fP, \fI\%abednarik\fP, \fI\%ahammond\fP, \fI\%alertedsnake\fP, +\fI\%alexander\-bauer\fP, \fI\%amontalban\fP, \fI\%basepi\fP, \fI\%bl4ckcontact\fP, \fI\%bx2\fP, \fI\%cachedout\fP, +\fI\%clarkperkins\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%damon\-atkins\fP, \fI\%danlsgiga\fP, \fI\%darkalia\fP, \fI\%dmurphy18\fP, +\fI\%do3meli\fP, \fI\%edhgoose\fP, \fI\%efficks\fP, \fI\%eliasp\fP, \fI\%eradman\fP, \fI\%fix7\fP, \fI\%galet\fP, \fI\%goestin\fP, +\fI\%gtmanfred\fP, \fI\%hrumph\fP, \fI\%hu\-dabao\fP, \fI\%isbm\fP, \fI\%jackywu\fP, \fI\%jacobhammons\fP, \fI\%jbonachera\fP, \fI\%jf\fP, +\fI\%jfindlay\fP, \fI\%jizhilong\fP, \fI\%justinta\fP, \fI\%kstreee\fP, \fI\%l2ol33rt\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, +\fI\%maximeguillet\fP, \fI\%meaksh\fP, \fI\%mikeadamz\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%mrproper\fP, +\fI\%multani\fP, \fI\%nvtkaszpir\fP, \fI\%oba11\fP, \fI\%onorua\fP, \fI\%opdude\fP, \fI\%orymate\fP, \fI\%oz123\fP, +\fI\%pass\-by\-value\fP, \fI\%pbdeuchler\fP, \fI\%rallytime\fP, \fI\%roosri\fP, \fI\%silenius\fP, \fI\%skizunov\fP, \fI\%slinn0\fP, +\fI\%stanislavb\fP, \fI\%swiftgist\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%theredcat\fP, \fI\%ticosax\fP, +\fI\%twangboy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%xbglowx\fP, \fI\%xiaoanyunfei\fP, \fI\%yhekma\fP) .UNINDENT .SS Known Issues .sp @@ -537410,7 +539387,7 @@ a1d59f4d2f Merge pull request \fI\%#36797\fP from cachedout/issue_36579 6ce4653fa3 Error on reaction with missing SLS file .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%saltstack/salt#36788\fP: (\fI\%damon\-atkins\fP) pillar/libvirt.py assume certtool is available and works everytime (refs: \fI\%#36803\fP) +\fBISSUE\fP \fI\%saltstack/salt#36788\fP: (\fI\%damon\-atkins\fP) pillar/libvirt.py assume certtool is available and works every time (refs: \fI\%#36803\fP) .IP \(bu 2 \fBPR\fP \fI\%#36803\fP: (\fI\%gtmanfred\fP) do not load libvirt pillar if certtool is unavailable @ \fI2016\-10\-06 11:15:14 UTC\fP @@ -539347,7 +541324,7 @@ f0987cf27a Merge pull request \fI\%#35881\fP from whiteinge/salt\-api\-catch\-se eda2ae0add Merge pull request \fI\%#35781\fP from thatch45/ssh_deploy_more .INDENT 2.0 .IP \(bu 2 -2558dcc100 follow up on the re\-deploy if there is a checksum missmatch +2558dcc100 follow up on the re\-deploy if there is a checksum mismatch .UNINDENT .IP \(bu 2 165237412c Merge pull request \fI\%#35815\fP from gtmanfred/2015.8 @@ -539733,7 +541710,17 @@ Total Issue References: \fB112\fP .IP \(bu 2 Total PR References: \fB281\fP .IP \(bu 2 -Contributors: \fB74\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Firewire2002\fP, \fI\%Mrten\fP, \fI\%Talkless\fP, \fI\%TronPaul\fP, \fI\%UtahDave\fP, \fI\%aaronm\-cloudtek\fP, \fI\%alex\-zel\fP, \fI\%alexandr\-orlov\fP, \fI\%alexbleotu\fP, \fI\%attiasr\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%bshelton229\fP, \fI\%cachedout\fP, \fI\%calve\fP, \fI\%clan\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%dere\fP, \fI\%dereckson\fP, \fI\%dhaines\fP, \fI\%dincamihai\fP, \fI\%do3meli\fP, \fI\%dragon788\fP, \fI\%edgan\fP, \fI\%fedusia\fP, \fI\%fj40crawler\fP, \fI\%genuss\fP, \fI\%gtmanfred\fP, \fI\%haeac\fP, \fI\%heewa\fP, \fI\%hu\-dabao\fP, \fI\%jeanpralo\fP, \fI\%jfindlay\fP, \fI\%jinm\fP, \fI\%kevinquinnyo\fP, \fI\%kontrolld\fP, \fI\%laleocen\fP, \fI\%lorengordon\fP, \fI\%m03\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%mikejford\fP, \fI\%moio\fP, \fI\%multani\fP, \fI\%nevins\-b\fP, \fI\%pass\-by\-value\fP, \fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%siccrusher\fP, \fI\%silenius\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, \fI\%skizunov\fP, \fI\%slinn0\fP, \fI\%sofixa\fP, \fI\%techhat\fP, \fI\%tedski\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thusoy\fP, \fI\%toanju\fP, \fI\%tobithiel\fP, \fI\%twangboy\fP, \fI\%tyhunt99\fP, \fI\%vutny\fP, \fI\%wanparo\fP, \fI\%whiteinge\fP, \fI\%xiaoanyunfei\fP, \fI\%yhekma\fP, \fI\%zwo\-bot\fP) +Contributors: \fB74\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Firewire2002\fP, \fI\%Mrten\fP, \fI\%Talkless\fP, +\fI\%TronPaul\fP, \fI\%UtahDave\fP, \fI\%aaronm\-cloudtek\fP, \fI\%alex\-zel\fP, \fI\%alexandr\-orlov\fP, \fI\%alexbleotu\fP, +\fI\%attiasr\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%bshelton229\fP, \fI\%cachedout\fP, \fI\%calve\fP, \fI\%clan\fP, \fI\%clinta\fP, +\fI\%cro\fP, \fI\%dere\fP, \fI\%dereckson\fP, \fI\%dhaines\fP, \fI\%dincamihai\fP, \fI\%do3meli\fP, \fI\%dragon788\fP, \fI\%edgan\fP, +\fI\%fedusia\fP, \fI\%fj40crawler\fP, \fI\%genuss\fP, \fI\%gtmanfred\fP, \fI\%haeac\fP, \fI\%heewa\fP, \fI\%hu\-dabao\fP, +\fI\%jeanpralo\fP, \fI\%jfindlay\fP, \fI\%jinm\fP, \fI\%kevinquinnyo\fP, \fI\%kontrolld\fP, \fI\%laleocen\fP, \fI\%lorengordon\fP, +\fI\%m03\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%mikejford\fP, \fI\%moio\fP, \fI\%multani\fP, \fI\%nevins\-b\fP, +\fI\%pass\-by\-value\fP, \fI\%rallytime\fP, \fI\%rbjorklin\fP, \fI\%siccrusher\fP, \fI\%silenius\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, +\fI\%skizunov\fP, \fI\%slinn0\fP, \fI\%sofixa\fP, \fI\%techhat\fP, \fI\%tedski\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, +\fI\%thusoy\fP, \fI\%toanju\fP, \fI\%tobithiel\fP, \fI\%twangboy\fP, \fI\%tyhunt99\fP, \fI\%vutny\fP, \fI\%wanparo\fP, \fI\%whiteinge\fP, +\fI\%xiaoanyunfei\fP, \fI\%yhekma\fP, \fI\%zwo\-bot\fP) .UNINDENT .SS Security Fixes .sp @@ -539906,9 +541893,9 @@ fa01367599 Keep a copy of the DEFAULT_API_OPTS and restore them after the test r .IP \(bu 2 fd2ee7db30 Add some simple unit tests for salt.config.api_config function .IP \(bu 2 -3d2fefc83b Make sure the pidfile and log_file values are overriden by api opts +3d2fefc83b Make sure the pidfile and log_file values are overridden by api opts .IP \(bu 2 -1f6b540e46 Make sure the pidfile and log_file values are overriden by api opts +1f6b540e46 Make sure the pidfile and log_file values are overridden by api opts .IP \(bu 2 04d307f917 salt\-api no longer forces the default timeout .UNINDENT @@ -540047,7 +542034,7 @@ b872bb63f6 DOCS: correct examples of running test suite .IP \(bu 2 7b657ca4ae add the ability to use keystone v2 and v3 .IP \(bu 2 -5646ae1b34 add ability to use keystoneauth to authenitcate in nova driver +5646ae1b34 add ability to use keystoneauth to authenticate in nova driver .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#38648\fP: (\fI\%ericuldall\fP) No release file error from PPA on Ubuntu (refs: \fI\%#38650\fP) @@ -541029,7 +543016,7 @@ d0cc7f0d56 Merge pull request \fI\%#37863\fP from rallytime/bp\-36893 .IP \(bu 2 \fBPR\fP \fI\%#37826\fP: (\fI\%rallytime\fP) Update branch refs to more relevant branch .IP \(bu 2 -\fBPR\fP \fI\%#37822\fP: (\fI\%laleocen\fP) add documenation for multiline encryption using nacl (refs: \fI\%#37826\fP) +\fBPR\fP \fI\%#37822\fP: (\fI\%laleocen\fP) add documentation for multiline encryption using nacl (refs: \fI\%#37826\fP) .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#19269\fP: (\fI\%markuskramerIgitt\fP) Undocumented feature \fInames:\fP of \fIfile.directory\fP (refs: \fI\%#37823\fP) @@ -542197,7 +544184,13 @@ Total Issue References: \fB52\fP .IP \(bu 2 Total PR References: \fB163\fP .IP \(bu 2 -Contributors: \fB43\fP (\fI\%Adaephon\-GH\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Foxlik\fP, \fI\%GideonRed\-zz\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%alexbleotu\fP, \fI\%anlutro\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%cro\fP, \fI\%dincamihai\fP, \fI\%drawsmcgraw\fP, \fI\%fboismenu\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, \fI\%grep4linux\fP, \fI\%gtmanfred\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%joe\-niland\fP, \fI\%lvg01\fP, \fI\%mbom2004\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%narendraingale2\fP, \fI\%nasenbaer13\fP, \fI\%ni3mm4nd\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%sergeizv\fP, \fI\%smarsching\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%twangboy\fP, \fI\%velom\fP, \fI\%vutny\fP, \fI\%yue9944882\fP) +Contributors: \fB43\fP (\fI\%Adaephon\-GH\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%Foxlik\fP, \fI\%GideonRed\-zz\fP, +\fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%alexbleotu\fP, \fI\%anlutro\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%cro\fP, +\fI\%dincamihai\fP, \fI\%drawsmcgraw\fP, \fI\%fboismenu\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, \fI\%grep4linux\fP, +\fI\%gtmanfred\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%joe\-niland\fP, \fI\%lvg01\fP, \fI\%mbom2004\fP, \fI\%mcalmer\fP, +\fI\%mchugh19\fP, \fI\%meaksh\fP, \fI\%mirceaulinic\fP, \fI\%morganwillcock\fP, \fI\%narendraingale2\fP, \fI\%nasenbaer13\fP, +\fI\%ni3mm4nd\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%sergeizv\fP, \fI\%smarsching\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, +\fI\%thatch45\fP, \fI\%twangboy\fP, \fI\%velom\fP, \fI\%vutny\fP, \fI\%yue9944882\fP) .UNINDENT .SS Security Fix .sp @@ -542362,13 +544355,13 @@ e663b761fb Fix small syntax error af1545deed Use the first address if cannot connect to any .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#40059\fP: (\fI\%terminalmage\fP) Fix traceback when virtualenv.managed is invoked with nonexistant user +\fBPR\fP \fI\%#40059\fP: (\fI\%terminalmage\fP) Fix traceback when virtualenv.managed is invoked with nonexistent user @ \fI2017\-03\-16 20:46:43 UTC\fP .INDENT 2.0 .IP \(bu 2 116201f345 Merge pull request \fI\%#40059\fP from terminalmage/fix\-virtualenv\-traceback .IP \(bu 2 -e3cfd29d6b Fix traceback when virtualenv.managed is invoked with nonexistant user +e3cfd29d6b Fix traceback when virtualenv.managed is invoked with nonexistent user .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#40090\fP: (\fI\%rallytime\fP) Back\-port \fI\%#40056\fP to 2016.3 @@ -542406,9 +544399,9 @@ a1f8b49bd1 update 2016.3.6 release notes with additional PR\(aqs .IP \(bu 2 8dcffc7751 Merge pull request \fI\%#40018\fP from meaksh/2016.3\-handling\-timeouts\-for\-manage.up\-runner .IP \(bu 2 -9f5c3b7dcd Allows to set custom timeouts for \(aqmanage.up\(aq and \(aqmanage.status\(aq +9f5c3b7dcd Allows one to set custom timeouts for \(aqmanage.up\(aq and \(aqmanage.status\(aq .IP \(bu 2 -2102d9c75c Allows to set \(aqtimeout\(aq and \(aqgather_job_timeout\(aq via kwargs +2102d9c75c Allows one to set \(aqtimeout\(aq and \(aqgather_job_timeout\(aq via kwargs .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#40038\fP: (\fI\%velom\fP) correctly parse "pkg_name===version" from pip freeze @@ -542462,13 +544455,13 @@ f3e7e4fb2a Add 2016.3.6 Release Notes 5d84b40bfd Attempt to fix failing grains tests in 2016.3 .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#39980\fP: (\fI\%vutny\fP) [2016.3] Allow to use \fIbg\fP kwarg for \fIcmd.run\fP state function +\fBPR\fP \fI\%#39980\fP: (\fI\%vutny\fP) [2016.3] Allow using \fIbg\fP kwarg for \fIcmd.run\fP state function @ \fI2017\-03\-14 17:16:14 UTC\fP .INDENT 2.0 .IP \(bu 2 0c61d064ad Merge pull request \fI\%#39980\fP from vutny/cmd\-run\-state\-bg .IP \(bu 2 -a81dc9dfc1 [2016.3] Allow to use \fIbg\fP kwarg for \fIcmd.run\fP state function +a81dc9dfc1 [2016.3] Allow using \fIbg\fP kwarg for \fIcmd.run\fP state function .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#39942\fP: (\fI\%Foxlik\fP) Web Documentation not in sync with release 2016.11.3 (refs: \fI\%#39994\fP) @@ -543088,7 +545081,7 @@ f16027d30e Merge pull request \fI\%#39297\fP from cro/pg_returner_docs .IP \(bu 2 52440416ca Merge pull request \fI\%#39221\fP from lvg01/fix\-bug\-39220 .IP \(bu 2 -e8a41d6341 Removes to early content stripping (stripping is allready done when needed with ident:true), fixes \fI\%#39220\fP +e8a41d6341 Removes to early content stripping (stripping is already done when needed with ident:true), fixes \fI\%#39220\fP .IP \(bu 2 a4b169e0bd Fixed wrong logic, fixes \fI\%#39220\fP .UNINDENT @@ -543269,7 +545262,7 @@ bffc537aca Remove extra if statements (rstrip will check for the presence anyway \fBISSUE\fP \fI\%#39118\fP: (\fI\%bobrik\fP) Minion ipv6 option is not documented (refs: \fI\%#39289\fP, \fI\%#39131\fP) .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#39131\fP: (\fI\%bobrik\fP) Clarify ipv6 option for minion and inteface for master, closes \fI\%#39118\fP +\fBPR\fP \fI\%#39131\fP: (\fI\%bobrik\fP) Clarify ipv6 option for minion and interface for master, closes \fI\%#39118\fP .IP \(bu 2 \fBPR\fP \fI\%#39116\fP: (\fI\%terminalmage\fP) Don\(aqt abort pillar.get with merge=True if default is None .UNINDENT @@ -543507,7 +545500,7 @@ e40fac589a Catch MinionError in file.source_list .IP \(bu 2 \fBISSUE\fP \fI\%#36121\fP: (\fI\%Ashald\fP) TemplateNotFound/Unable to cache file (refs: \fI\%#38875\fP) .IP \(bu 2 -\fBPR\fP \fI\%#38875\fP: (\fI\%terminalmage\fP) Reactor: fix traceback when salt:// path is nonexistant +\fBPR\fP \fI\%#38875\fP: (\fI\%terminalmage\fP) Reactor: fix traceback when salt:// path is nonexistent @ \fI2017\-01\-24 15:23:39 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -543515,7 +545508,7 @@ b5df104fc2 Merge pull request \fI\%#38875\fP from terminalmage/issue36121 .IP \(bu 2 fbc4d2a2c4 reactor: ensure glob_ref is a string .IP \(bu 2 -2e443d79a3 cp.cache_file: add note re: return for nonexistant salt:// path +2e443d79a3 cp.cache_file: add note re: return for nonexistent salt:// path .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#37413\fP: (\fI\%Snarfingcode666\fP) Salt\-cloud vmware missing reboot command (refs: \fI\%#38887\fP, \fI\%#38890\fP) @@ -544350,15 +546343,7 @@ modules have been substantially updated and added. .SS New SaltStack Installation Repositories .sp SaltStack now provides installation repositories for several platforms, with more to come. -See the following links for instructions: -.INDENT 0.0 -.IP \(bu 2 -Red Hat / CentOS 5, 6, 7 -.IP \(bu 2 -Debian 8 -.IP \(bu 2 -Windows -.UNINDENT +For instructions, see: \fI\%repo.saltstack.com\fP\&. .SS Send Event on State Completion .sp A \fBfire_event\fP global state keyword argument was added that allows any state to @@ -544698,8 +546683,7 @@ using existing states when writing custom states. See cross calling states\&. .INDENT 0.0 .IP \(bu 2 Enhanced the windows minion silent installation with command line parameters -to configure the salt master and minion name. See Silent Installer -Options\&. +to configure the salt master and minion name. .IP \(bu 2 Improved user management with additional capabilities in the user module for Windows. .IP \(bu 2 @@ -544895,7 +546879,13 @@ Total Issue References: \fB39\fP .IP \(bu 2 Total PR References: \fB135\fP .IP \(bu 2 -Contributors: \fB40\fP (\fI\%DmitryKuzmenko\fP, \fI\%The\-Loeki\fP, \fI\%TheBigBear\fP, \fI\%basepi\fP, \fI\%bechtoldt\fP, \fI\%bernieke\fP, \fI\%blueyed\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%deuscapturus\fP, \fI\%dmurphy18\fP, \fI\%dsumsky\fP, \fI\%eliasp\fP, \fI\%flowhamster\fP, \fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%justinta\fP, \fI\%l2ol33rt\fP, \fI\%macgyver13\fP, \fI\%meggiebot\fP, \fI\%msteed\fP, \fI\%multani\fP, \fI\%nasenbaer13\fP, \fI\%perfinion\fP, \fI\%pprkut\fP, \fI\%rallytime\fP, \fI\%rhealitycheck\fP, \fI\%ruzarowski\fP, \fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, \fI\%systembell\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) +Contributors: \fB40\fP (\fI\%DmitryKuzmenko\fP, \fI\%The\-Loeki\fP, \fI\%TheBigBear\fP, \fI\%basepi\fP, \fI\%bechtoldt\fP, +\fI\%bernieke\fP, \fI\%blueyed\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%deuscapturus\fP, +\fI\%dmurphy18\fP, \fI\%dsumsky\fP, \fI\%eliasp\fP, \fI\%flowhamster\fP, \fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, +\fI\%jfindlay\fP, \fI\%justinta\fP, \fI\%l2ol33rt\fP, \fI\%macgyver13\fP, \fI\%meggiebot\fP, \fI\%msteed\fP, \fI\%multani\fP, +\fI\%nasenbaer13\fP, \fI\%perfinion\fP, \fI\%pprkut\fP, \fI\%rallytime\fP, \fI\%rhealitycheck\fP, \fI\%ruzarowski\fP, +\fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, \fI\%systembell\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, +\fI\%whiteinge\fP) .UNINDENT .SS Security Fixes .sp @@ -545130,7 +547120,7 @@ adeb1dcad4 Pylint Fix 68d784c3dd Merge pull request \fI\%#27472\fP from cachedout/fix_27447 .INDENT 2.0 .IP \(bu 2 -5e745ad6da Change recommeded schema for data field in mysql event table +5e745ad6da Change recommended schema for data field in mysql event table .UNINDENT .IP \(bu 2 ee6e0ed057 Merge pull request \fI\%#27468\fP from cachedout/fix_27351 @@ -545180,7 +547170,7 @@ a996ea46e2 Added quotes to version numbers example ed6207a438 Merge pull request \fI\%#27419\fP from rallytime/fix\-9856 .INDENT 2.0 .IP \(bu 2 -551396564a Ammend error log to include multiple tips for troubleshooting. +551396564a Amend error log to include multiple tips for troubleshooting. .UNINDENT .IP \(bu 2 73fa89edf7 Merge pull request \fI\%#27426\fP from rallytime/fix\-16753 @@ -545194,7 +547184,7 @@ f6cbd81e66 Don\(aqt stacktrace if there are conflicting id errors in highstate .IP \(bu 2 39a4ae5a6c Remove hdd: 19 refs from SL docs \- no longer available from SoftLayer. .IP \(bu 2 -de2f9234d3 Use correct default for bandwith +de2f9234d3 Use correct default for bandwidth .IP \(bu 2 42d8127f79 Don\(aqt set the optional_products default to a boolean, and then try to loop. .IP \(bu 2 @@ -545705,7 +547695,7 @@ cd82ead005 Merge pull request \fI\%#27337\fP from rallytime/cloud\-logging\-eigh ed18384108 Merge pull request \fI\%#7\fP from jtand/cloud\-logging\-eight .INDENT 2.0 .IP \(bu 2 -a6c1d0b408 Fixed a bug where logging_command wasnt set as a key in a couple spots +a6c1d0b408 Fixed a bug where logging_command wasn\(aqt set as a key in a couple spots .UNINDENT .IP \(bu 2 8bb7cb7ff4 Use correct indexes @@ -546840,13 +548830,13 @@ c1abc5a19f Remove implied Nones 7e35b13022 Turned multiprocessing on .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#27086\fP: (\fI\%techhat\fP) Document develoment of SPM loader modules +\fBPR\fP \fI\%#27086\fP: (\fI\%techhat\fP) Document development of SPM loader modules @ \fI2015\-09\-13 04:52:55 UTC\fP .INDENT 2.0 .IP \(bu 2 c78d833540 Merge pull request \fI\%#27086\fP from techhat/spmdevdocs .IP \(bu 2 -ee0c8955dd Document develoment of SPM loader modules +ee0c8955dd Document development of SPM loader modules .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#23125\fP: (\fI\%bemeyert\fP) Elasticsearch as master_job_cache throws critical (refs: \fI\%#26941\fP) @@ -547046,7 +549036,14 @@ Total Issue References: \fB70\fP .IP \(bu 2 Total PR References: \fB221\fP .IP \(bu 2 -Contributors: \fB48\fP (\fI\%AAbouZaid\fP, \fI\%BlaineAtAffirm\fP, \fI\%DmitryKuzmenko\fP, \fI\%The\-Loeki\fP, \fI\%abednarik\fP, \fI\%babilen\fP, \fI\%bebehei\fP, \fI\%cachedout\fP, \fI\%clinta\fP, \fI\%complexsplit\fP, \fI\%cro\fP, \fI\%danslimmon\fP, \fI\%dcolish\fP, \fI\%dincamihai\fP, \fI\%edgan\fP, \fI\%gerhardqux\fP, \fI\%ghedo\fP, \fI\%isbm\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%jodv\fP, \fI\%justinta\fP, \fI\%l13t\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%lvg01\fP, \fI\%mcalmer\fP, \fI\%meaksh\fP, \fI\%morganwillcock\fP, \fI\%oeuftete\fP, \fI\%opdude\fP, \fI\%phistrom\fP, \fI\%rallytime\fP, \fI\%rmarcinik\fP, \fI\%ryan\-lane\fP, \fI\%sacren\fP, \fI\%steverweber\fP, \fI\%techhat\fP, \fI\%tegbert\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%the\-glu\fP, \fI\%thegoodduke\fP, \fI\%ticosax\fP, \fI\%tveastman\fP, \fI\%twangboy\fP, \fI\%vutny\fP, \fI\%zer0def\fP) +Contributors: \fB48\fP (\fI\%AAbouZaid\fP, \fI\%BlaineAtAffirm\fP, \fI\%DmitryKuzmenko\fP, \fI\%The\-Loeki\fP, +\fI\%abednarik\fP, \fI\%babilen\fP, \fI\%bebehei\fP, \fI\%cachedout\fP, \fI\%clinta\fP, \fI\%complexsplit\fP, \fI\%cro\fP, +\fI\%danslimmon\fP, \fI\%dcolish\fP, \fI\%dincamihai\fP, \fI\%edgan\fP, \fI\%gerhardqux\fP, \fI\%ghedo\fP, \fI\%isbm\fP, +\fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%jodv\fP, \fI\%justinta\fP, \fI\%l13t\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, +\fI\%lvg01\fP, \fI\%mcalmer\fP, \fI\%meaksh\fP, \fI\%morganwillcock\fP, \fI\%oeuftete\fP, \fI\%opdude\fP, \fI\%phistrom\fP, +\fI\%rallytime\fP, \fI\%rmarcinik\fP, \fI\%ryan\-lane\fP, \fI\%sacren\fP, \fI\%steverweber\fP, \fI\%techhat\fP, \fI\%tegbert\fP, +\fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%the\-glu\fP, \fI\%thegoodduke\fP, \fI\%ticosax\fP, \fI\%tveastman\fP, \fI\%twangboy\fP, +\fI\%vutny\fP, \fI\%zer0def\fP) .UNINDENT .SS Ubuntu 16.04 Packages .sp @@ -547566,7 +549563,7 @@ cb5399787c Merge pull request \fI\%#34136\fP from meaksh/salt\-suse\-os\-detecti \fBPR\fP \fI\%#33599\fP: (\fI\%lomeroe\fP) Fix s3 large file download (refs: \fI\%#33681\fP) .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#34213\fP: (\fI\%terminalmage\fP) gitfs w/pygit2 \- corner case, traceback with short hexidecimal environment names (refs: \fI\%#34218\fP) +\fBISSUE\fP \fI\%#34213\fP: (\fI\%terminalmage\fP) gitfs w/pygit2 \- corner case, traceback with short hexadecimal environment names (refs: \fI\%#34218\fP) .IP \(bu 2 \fBISSUE\fP \fI\%#34212\fP: (\fI\%terminalmage\fP) gitfs: commit SHAs no longer available as fileserver environments (refs: \fI\%#34218\fP) .INDENT 2.0 @@ -548325,7 +550322,7 @@ eaaef25c79 lint issue fixed 6b6febb211 unit tests for rpm.checksum() and zypper.download() .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#33319\fP: (\fI\%ghost\fP) Salt interpets jinja syntax in contents pillar (refs: \fI\%#33513\fP) +\fBISSUE\fP \fI\%#33319\fP: (\fI\%ghost\fP) Salt interprets jinja syntax in contents pillar (refs: \fI\%#33513\fP) .IP \(bu 2 \fBPR\fP \fI\%#33513\fP: (\fI\%rallytime\fP) Add a section to the jinja docs about escaping jinja @ \fI2016\-05\-26 14:24:58 UTC\fP @@ -548406,7 +550403,7 @@ aa2bac3a0d Remove debugging 68d8050cb8 Fix diskusage beacon .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#33465\fP: (\fI\%meaksh\fP) jobs.exit_success allow to check if a job has executed and exit successfully +\fBPR\fP \fI\%#33465\fP: (\fI\%meaksh\fP) jobs.exit_success allow checking if a job has executed and exit successfully @ \fI2016\-05\-25 16:52:53 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -548414,7 +550411,7 @@ aa2bac3a0d Remove debugging .IP \(bu 2 9deb70fd8e jobs.exit_success() now works parsing the results of jobs.lookup_id() .IP \(bu 2 -7ba40c4f31 jobs.exit_success allow to check if a job has executed and exit successfully +7ba40c4f31 jobs.exit_success allow checking if a job has executed and exit successfully .IP \(bu 2 \fBPR\fP \fI\%saltstack/salt\-jenkins#175\fP: (\fI\%justinta\fP) Adding back shade to setup states (refs: \fI\%#33487\fP) .UNINDENT @@ -548583,7 +550580,7 @@ dc8ce2d8b1 Fix traceback in logging for config validation (\fI\%#33386\fP) (\fI\ .IP \(bu 2 \fBPR\fP \fI\%#33421\fP: (\fI\%abednarik\fP) Documentation update in file.serialize. .IP \(bu 2 -\fBPR\fP \fI\%#33398\fP: (\fI\%lvg01\fP) Fix LVM parameter devices as a pure list. Comma seperated lists are c… +\fBPR\fP \fI\%#33398\fP: (\fI\%lvg01\fP) Fix LVM parameter devices as a pure list. Comma separated lists are c… .IP \(bu 2 \fBPR\fP \fI\%#33406\fP: (\fI\%rallytime\fP) Back\-port \fI\%#33387\fP to 2015.8 .IP \(bu 2 @@ -548825,7 +550822,11 @@ Total Issue References: \fB43\fP .IP \(bu 2 Total PR References: \fB117\fP .IP \(bu 2 -Contributors: \fB29\fP (\fI\%Azidburn\fP, \fI\%Ch3LL\fP, \fI\%UtahDave\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, \fI\%deepakhj\fP, \fI\%dere\fP, \fI\%gongled\fP, \fI\%gtmanfred\fP, \fI\%hrumph\fP, \fI\%hu\-dabao\fP, \fI\%isbm\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%jmesquita\fP, \fI\%junovitch\fP, \fI\%justinta\fP, \fI\%kev009\fP, \fI\%martinhoefling\fP, \fI\%multani\fP, \fI\%rallytime\fP, \fI\%randomed\fP, \fI\%sjorge\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%theothergraham\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) +Contributors: \fB29\fP (\fI\%Azidburn\fP, \fI\%Ch3LL\fP, \fI\%UtahDave\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, +\fI\%deepakhj\fP, \fI\%dere\fP, \fI\%gongled\fP, \fI\%gtmanfred\fP, \fI\%hrumph\fP, \fI\%hu\-dabao\fP, \fI\%isbm\fP, \fI\%jacobhammons\fP, +\fI\%jfindlay\fP, \fI\%jmesquita\fP, \fI\%junovitch\fP, \fI\%justinta\fP, \fI\%kev009\fP, \fI\%martinhoefling\fP, \fI\%multani\fP, +\fI\%rallytime\fP, \fI\%randomed\fP, \fI\%sjorge\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%theothergraham\fP, +\fI\%twangboy\fP, \fI\%whiteinge\fP) .UNINDENT .SS Changelog for v2015.8.11..v2015.8.12 .sp @@ -549145,7 +551146,7 @@ d328ec0157 Fix file.recurse with clean: True .IP \(bu 2 8a5b47b5d7 Collect all error data from the wfuncs call .IP \(bu 2 -11864c31b7 supress a stack trace to show clean ssh error +11864c31b7 suppress a stack trace to show clean ssh error .IP \(bu 2 9fbfa282fa wow this solves an issue! .UNINDENT @@ -549350,7 +551351,7 @@ e2e8bbbfde Add integration test for \fI\%#35214\fP .IP \(bu 2 e1fcb8311d Put pkg.latest_version in try/except structure Move refreshed or refresh to different spot (just for code tidyness) .IP \(bu 2 -e0b6261659 changed name of varibale \(aqrefreshed\(aq to \(aqwas_refreshed\(aq +e0b6261659 changed name of variable \(aqrefreshed\(aq to \(aqwas_refreshed\(aq .IP \(bu 2 340110b4b4 Move check for rtag to outermost\-nesting in function .IP \(bu 2 @@ -549692,7 +551693,7 @@ e9e5bbe38b Merge pull request \fI\%#34721\fP from rallytime/fix\-34703 9c803d05a5 Add output_file option to master config docs .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%saltstack/salt#32276\fP: (\fI\%javicacheiro\fP) pkg.installed using sources from master fails with file not found after first succesful run (refs: \fI\%#34689\fP) +\fBISSUE\fP \fI\%saltstack/salt#32276\fP: (\fI\%javicacheiro\fP) pkg.installed using sources from master fails with file not found after first successful run (refs: \fI\%#34689\fP) .IP \(bu 2 \fBPR\fP \fI\%#34689\fP: (\fI\%Azidburn\fP) fix second run problems with pkg.installed using sources @ \fI2016\-07\-15 21:19:39 UTC\fP @@ -549746,7 +551747,19 @@ Total Issue References: \fB138\fP .IP \(bu 2 Total PR References: \fB351\fP .IP \(bu 2 -Contributors: \fB83\fP (\fI\%DmitryKuzmenko\fP, \fI\%JaseFace\fP, \fI\%LoveIsGrief\fP, \fI\%MasterNayru\fP, \fI\%Oro\fP, \fI\%SmithSamuelM\fP, \fI\%The\-Loeki\fP, \fI\%TheBigBear\fP, \fI\%aboe76\fP, \fI\%ajacoutot\fP, \fI\%anlutro\fP, \fI\%avinassh\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%bechtoldt\fP, \fI\%bernieke\fP, \fI\%blueyed\fP, \fI\%cachedout\fP, \fI\%cbuechler\fP, \fI\%cedwards\fP, \fI\%clarkperkins\fP, \fI\%cro\fP, \fI\%dkiser\fP, \fI\%douglas\-vaz\fP, \fI\%dr4Ke\fP, \fI\%eguven\fP, \fI\%eliasp\fP, \fI\%erchn\fP, \fI\%eyj\fP, \fI\%favadi\fP, \fI\%flavio\fP, \fI\%garethgreenaway\fP, \fI\%gravyboat\fP, \fI\%gtmanfred\fP, \fI\%hedinfaok\fP, \fI\%hexedpackets\fP, \fI\%hyn\-salt\fP, \fI\%isbm\fP, \fI\%itsamenathan\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jeffreyctang\fP, \fI\%jejenone\fP, \fI\%jfindlay\fP, \fI\%johnsocp\fP, \fI\%justinta\fP, \fI\%keesbos\fP, \fI\%lathama\fP, \fI\%ldobson\fP, \fI\%lomeroe\fP, \fI\%martinhoefling\fP, \fI\%mbarrien\fP, \fI\%mbologna\fP, \fI\%merll\fP, \fI\%mrosedale\fP, \fI\%msteed\fP, \fI\%multani\fP, \fI\%nasenbaer13\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%opdude\fP, \fI\%papertigers\fP, \fI\%pass\-by\-value\fP, \fI\%plastikos\fP, \fI\%quantonganh\fP, \fI\%rallytime\fP, \fI\%redmcg\fP, \fI\%rowillia\fP, \fI\%ruzarowski\fP, \fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, \fI\%sdm24\fP, \fI\%sjansen\fP, \fI\%skizunov\fP, \fI\%srkunze\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%ticosax\fP, \fI\%tkwilliams\fP, \fI\%toddtomkinson\fP, \fI\%twangboy\fP, \fI\%twellspring\fP, \fI\%whiteinge\fP) +Contributors: \fB83\fP (\fI\%DmitryKuzmenko\fP, \fI\%JaseFace\fP, \fI\%LoveIsGrief\fP, \fI\%MasterNayru\fP, \fI\%Oro\fP, +\fI\%SmithSamuelM\fP, \fI\%The\-Loeki\fP, \fI\%TheBigBear\fP, \fI\%aboe76\fP, \fI\%ajacoutot\fP, \fI\%anlutro\fP, \fI\%avinassh\fP, +\fI\%basepi\fP, \fI\%bdrung\fP, \fI\%bechtoldt\fP, \fI\%bernieke\fP, \fI\%blueyed\fP, \fI\%cachedout\fP, \fI\%cbuechler\fP, +\fI\%cedwards\fP, \fI\%clarkperkins\fP, \fI\%cro\fP, \fI\%dkiser\fP, \fI\%douglas\-vaz\fP, \fI\%dr4Ke\fP, \fI\%eguven\fP, \fI\%eliasp\fP, +\fI\%erchn\fP, \fI\%eyj\fP, \fI\%favadi\fP, \fI\%flavio\fP, \fI\%garethgreenaway\fP, \fI\%gravyboat\fP, \fI\%gtmanfred\fP, +\fI\%hedinfaok\fP, \fI\%hexedpackets\fP, \fI\%hyn\-salt\fP, \fI\%isbm\fP, \fI\%itsamenathan\fP, \fI\%jacksontj\fP, +\fI\%jacobhammons\fP, \fI\%jeffreyctang\fP, \fI\%jejenone\fP, \fI\%jfindlay\fP, \fI\%johnsocp\fP, \fI\%justinta\fP, \fI\%keesbos\fP, +\fI\%lathama\fP, \fI\%ldobson\fP, \fI\%lomeroe\fP, \fI\%martinhoefling\fP, \fI\%mbarrien\fP, \fI\%mbologna\fP, \fI\%merll\fP, +\fI\%mrosedale\fP, \fI\%msteed\fP, \fI\%multani\fP, \fI\%nasenbaer13\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%opdude\fP, +\fI\%papertigers\fP, \fI\%pass\-by\-value\fP, \fI\%plastikos\fP, \fI\%quantonganh\fP, \fI\%rallytime\fP, \fI\%redmcg\fP, +\fI\%rowillia\fP, \fI\%ruzarowski\fP, \fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, \fI\%sdm24\fP, \fI\%sjansen\fP, \fI\%skizunov\fP, +\fI\%srkunze\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%ticosax\fP, \fI\%tkwilliams\fP, \fI\%toddtomkinson\fP, +\fI\%twangboy\fP, \fI\%twellspring\fP, \fI\%whiteinge\fP) .UNINDENT .sp \fBIMPORTANT:\fP @@ -550784,65 +552797,65 @@ e08f45c824 Issue \fI\%#28527\fP boto_rds.create does not work .IP \(bu 2 ec924e8410 Merge pull request \fI\%#28560\fP from bdrung/2015.8 .IP \(bu 2 -89dcb66310 Fix the wrong "allow to do" phrase +89dcb66310 Fix "allow one to do" phrase .IP \(bu 2 -859b6b46a6 Fix typo an nonexistant \-> nonexistent +859b6b46a6 Fix typo of nonexistent .IP \(bu 2 -66921cc61e Fix typo an succesfully \-> successfully +66921cc61e Fix typo of successfully .IP \(bu 2 -c1e3ef7c8d Fix typo an explicitely \-> explicitly +c1e3ef7c8d Fix typo of explicitly .IP \(bu 2 -029a95398c Fix typo an superflous \-> superfluous +029a95398c Fix typo of superfluous .IP \(bu 2 -026c215933 Fix typo an unecessary \-> unnecessary +026c215933 Fix typo of unnecessary .IP \(bu 2 -5f7fc5f94b Fix typo an edditable \-> editable +5f7fc5f94b Fix typo of editable .IP \(bu 2 -0b768944c2 Fix typo an deamon \-> daemon +0b768944c2 Fix typo of daemon .IP \(bu 2 -5af49881d7 Fix typo an completly \-> completely +5af49881d7 Fix typo of completely .IP \(bu 2 14d2a16f74 Fix typos of compatibility .IP \(bu 2 -46a5a9b073 Fix typo an suppored \-> supported +46a5a9b073 Fix typo of supported .IP \(bu 2 -abc490a78e Fix typo an usefull \-> useful +abc490a78e Fix typo of useful .IP \(bu 2 -ddd412180c Fix typo an targetting \-> targeting +ddd412180c Fix typo of targeting .IP \(bu 2 -610a6a77ae Fix typo an verison \-> version +610a6a77ae Fix typo of version .IP \(bu 2 -e0a5d46a1e Fix typo an seperated \-> separated +e0a5d46a1e Fix typo of separated .IP \(bu 2 -7f11cfd5e1 Fix typo an helpfull \-> helpful +7f11cfd5e1 Fix typo of helpful .IP \(bu 2 2e9b520d84 Fix typos of omitted .IP \(bu 2 -3029f64481 Fix typo an compatbility \-> compatibility +3029f64481 Fix typo of compatibility .IP \(bu 2 -470e82f17f Fix typo an dictionnary \-> dictionary +470e82f17f Fix typo of dictionary .IP \(bu 2 -5843c7aa24 Fix typo an optionnal \-> optional +5843c7aa24 Fix typo of optional .IP \(bu 2 -730d0f95e7 Fix typo an transfered \-> transferred +730d0f95e7 Fix typo of transferred .IP \(bu 2 -c7e7884de2 Fix typo an recieved \-> received +c7e7884de2 Fix typo of received .IP \(bu 2 -50eea287f3 Fix typo an managment \-> management +50eea287f3 Fix typo of management .IP \(bu 2 cb01da81c6 Fix typos of parameter .IP \(bu 2 -45fcc7d339 Fix typo an dont \-> don\(aqt +45fcc7d339 Fix typo of don\(aqt .IP \(bu 2 -3624935d32 Fix typo an other \-> another +3624935d32 Fix typo of another .IP \(bu 2 -d16afe2607 Fix typo sofwares \-> software +d16afe2607 Fix typo of software .IP \(bu 2 -b9b7cbe525 Fix typo sofware \-> software +b9b7cbe525 Fix typo of software .IP \(bu 2 8edd2c1add Fix typos of dependency .IP \(bu 2 -3a5e2e3437 Fix typo documention \-> documentation +3a5e2e3437 Fix typo of documentation .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#28528\fP: (\fI\%schlagify\fP) timezone.system error: CommandExecutionError: Failed to parse timedatectl output, this is likely a bug (refs: \fI\%#28550\fP) @@ -551125,7 +553138,7 @@ f96d39483d updated the tutorial with gravyboat\(aqs suggestions .IP \(bu 2 b1f4a2bdf4 i think i changed the wrong header, updated to fix .IP \(bu 2 -846b3aece1 I found you can not run the cp.push commands until after enabling the feature in the conf, so I wanted to update the docs so others who try these commands wont bump into the same issue I had. +846b3aece1 I found you can not run the cp.push commands until after enabling the feature in the conf, so I wanted to update the docs so others who try these commands won\(aqt bump into the same issue I had. .UNINDENT .IP \(bu 2 e3eff9b909 Merge pull request \fI\%#28280\fP from 0xf10e/patch\-1 @@ -553465,7 +555478,7 @@ fd485e2396 returners.local_cache: fix endless loop on OSError .IP \(bu 2 579f2646ba .. versionadded:: 2015.5.6 .IP \(bu 2 -cbaf46e066 python <2.7 compability (pylint issue) +cbaf46e066 python <2.7 compatibility (pylint issue) .IP \(bu 2 ecde499478 s/bin/b to avoid confusion with bin() .IP \(bu 2 @@ -553978,7 +555991,11 @@ Total Issue References: \fB26\fP .IP \(bu 2 Total PR References: \fB64\fP .IP \(bu 2 -Contributors: \fB30\fP (\fI\%DmitryKuzmenko\fP, \fI\%RealKelsar\fP, \fI\%alexproca\fP, \fI\%anlutro\fP, \fI\%basepi\fP, \fI\%bogdanr\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, \fI\%chrigl\fP, \fI\%cro\fP, \fI\%fcrozat\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, \fI\%jfindlay\fP, \fI\%kiorky\fP, \fI\%kt97679\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%mhoogendoorn\fP, \fI\%nmadhok\fP, \fI\%optix2000\fP, \fI\%paulnivin\fP, \fI\%quantonganh\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%schwing\fP, \fI\%sjorge\fP, \fI\%tampakrap\fP, \fI\%terminalmage\fP, \fI\%ticosax\fP) +Contributors: \fB30\fP (\fI\%DmitryKuzmenko\fP, \fI\%RealKelsar\fP, \fI\%alexproca\fP, \fI\%anlutro\fP, \fI\%basepi\fP, +\fI\%bogdanr\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, \fI\%chrigl\fP, \fI\%cro\fP, \fI\%fcrozat\fP, \fI\%gtmanfred\fP, \fI\%isbm\fP, +\fI\%jfindlay\fP, \fI\%kiorky\fP, \fI\%kt97679\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%mhoogendoorn\fP, \fI\%nmadhok\fP, +\fI\%optix2000\fP, \fI\%paulnivin\fP, \fI\%quantonganh\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%schwing\fP, \fI\%sjorge\fP, +\fI\%tampakrap\fP, \fI\%terminalmage\fP, \fI\%ticosax\fP) .UNINDENT .SS Security Fix .sp @@ -554312,7 +556329,7 @@ a7d5aafbe3 Update documentation for the color settings .IP \(bu 2 15f83e180d Add more preset colors .IP \(bu 2 -44339f3dc1 Impement color setter with transition +44339f3dc1 Implement color setter with transition .IP \(bu 2 0f4d5b9eac Implement effects method .IP \(bu 2 @@ -554877,7 +556894,18 @@ Total Issue References: \fB120\fP .IP \(bu 2 Total PR References: \fB312\fP .IP \(bu 2 -Contributors: \fB78\fP (\fI\%AkhterAli\fP, \fI\%DmitryKuzmenko\fP, \fI\%MadsRC\fP, \fI\%Oro\fP, \fI\%The\-Loeki\fP, \fI\%abednarik\fP, \fI\%akissa\fP, \fI\%anlutro\fP, \fI\%basepi\fP, \fI\%bastiaanb\fP, \fI\%bdrung\fP, \fI\%borgstrom\fP, \fI\%cachedout\fP, \fI\%clan\fP, \fI\%clinta\fP, \fI\%cournape\fP, \fI\%cro\fP, \fI\%ctrlrsf\fP, \fI\%dmacvicar\fP, \fI\%dmurphy18\fP, \fI\%dnd\fP, \fI\%dr4Ke\fP, \fI\%eliasp\fP, \fI\%fcrozat\fP, \fI\%frioux\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, \fI\%gqgunhed\fP, \fI\%gtmanfred\fP, \fI\%hexedpackets\fP, \fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%jleimbach\fP, \fI\%job\fP, \fI\%joejulian\fP, \fI\%julianbrost\fP, \fI\%justinta\fP, \fI\%kingsquirrel152\fP, \fI\%kiorky\fP, \fI\%l2ol33rt\fP, \fI\%lagesag\fP, \fI\%lorengordon\fP, \fI\%mbarrien\fP, \fI\%mpreziuso\fP, \fI\%multani\fP, \fI\%nmadhok\fP, \fI\%oeuftete\fP, \fI\%opdude\fP, \fI\%optix2000\fP, \fI\%pass\-by\-value\fP, \fI\%paulnivin\fP, \fI\%plastikos\fP, \fI\%pritambaral\fP, \fI\%rallytime\fP, \fI\%rasathus\fP, \fI\%rmatulat\fP, \fI\%ruxandraburtica\fP, \fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, \fI\%seanjnkns\fP, \fI\%serge\-p\fP, \fI\%sjorge\fP, \fI\%stanislavb\fP, \fI\%tbaker57\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thegoodduke\fP, \fI\%thomaso\-mirodin\fP, \fI\%ticosax\fP, \fI\%timcharper\fP, \fI\%tkunicki\fP, \fI\%trevor\-h\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP, \fI\%whytewolf\fP) +Contributors: \fB78\fP (\fI\%AkhterAli\fP, \fI\%DmitryKuzmenko\fP, \fI\%MadsRC\fP, \fI\%Oro\fP, \fI\%The\-Loeki\fP, +\fI\%abednarik\fP, \fI\%akissa\fP, \fI\%anlutro\fP, \fI\%basepi\fP, \fI\%bastiaanb\fP, \fI\%bdrung\fP, \fI\%borgstrom\fP, +\fI\%cachedout\fP, \fI\%clan\fP, \fI\%clinta\fP, \fI\%cournape\fP, \fI\%cro\fP, \fI\%ctrlrsf\fP, \fI\%dmacvicar\fP, \fI\%dmurphy18\fP, +\fI\%dnd\fP, \fI\%dr4Ke\fP, \fI\%eliasp\fP, \fI\%fcrozat\fP, \fI\%frioux\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, \fI\%gqgunhed\fP, +\fI\%gtmanfred\fP, \fI\%hexedpackets\fP, \fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%jleimbach\fP, +\fI\%job\fP, \fI\%joejulian\fP, \fI\%julianbrost\fP, \fI\%justinta\fP, \fI\%kingsquirrel152\fP, \fI\%kiorky\fP, \fI\%l2ol33rt\fP, +\fI\%lagesag\fP, \fI\%lorengordon\fP, \fI\%mbarrien\fP, \fI\%mpreziuso\fP, \fI\%multani\fP, \fI\%nmadhok\fP, \fI\%oeuftete\fP, +\fI\%opdude\fP, \fI\%optix2000\fP, \fI\%pass\-by\-value\fP, \fI\%paulnivin\fP, \fI\%plastikos\fP, \fI\%pritambaral\fP, +\fI\%rallytime\fP, \fI\%rasathus\fP, \fI\%rmatulat\fP, \fI\%ruxandraburtica\fP, \fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, +\fI\%seanjnkns\fP, \fI\%serge\-p\fP, \fI\%sjorge\fP, \fI\%stanislavb\fP, \fI\%tbaker57\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, +\fI\%thatch45\fP, \fI\%thegoodduke\fP, \fI\%thomaso\-mirodin\fP, \fI\%ticosax\fP, \fI\%timcharper\fP, \fI\%tkunicki\fP, +\fI\%trevor\-h\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP, \fI\%whytewolf\fP) .UNINDENT .SS Known Issues .INDENT 0.0 @@ -555489,7 +557517,7 @@ c20f9b6a87 Added else statements @ \fI2016\-01\-15 18:31:57 UTC\fP .INDENT 2.0 .IP \(bu 2 -c478148b60 Merge pull request \fI\%#30384\fP from isbm/isbm\-zypper\-info\-avaiable\-fix +c478148b60 Merge pull request \fI\%#30384\fP from isbm/isbm\-zypper\-info\-available\-fix .IP \(bu 2 c7bc20e865 Split information, that is compatible with the Zypper\(aqs output on SLE11. .UNINDENT @@ -555745,7 +557773,7 @@ df70afdaa3 Merge \fI\%#30231\fP with updates to dependency documentation a7c2ad5505 Fix issue where pyVmomi 6.0.0 raises SSL Error for systems using Python2.7+ .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#30354\fP: (\fI\%anlutro\fP) Make sure all ignore_missing SLSes are catched +\fBPR\fP \fI\%#30354\fP: (\fI\%anlutro\fP) Make sure all ignore_missing SLSes are caught @ \fI2016\-01\-14 16:24:19 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -555753,7 +557781,7 @@ a7c2ad5505 Fix issue where pyVmomi 6.0.0 raises SSL Error for systems using Pyth .IP \(bu 2 7ee61f0d62 Merge pull request \fI\%#30354\fP from alprs/fix\-pillar_ignore_missing .IP \(bu 2 -2f662bbc8d make sure \fIall\fP ignore_missing slses are catched +2f662bbc8d make sure \fIall\fP ignore_missing slses are caught .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#30356\fP: (\fI\%nmadhok\fP) Adding code author @@ -556107,7 +558135,7 @@ c8c30f2105 I fail at linting... Fixed my uppercase/lowercase problem .IP \(bu 2 0877b33026 Fixed some linting issues .IP \(bu 2 -8ec36497a1 Added note about systemd and uncleanshutdown. Also fixed line lenght of comments to max 80 characters as per PEP0008 +8ec36497a1 Added note about systemd and uncleanshutdown. Also fixed line length of comments to max 80 characters as per PEP0008 .IP \(bu 2 a50428d02c On an unclean shutdown, if oncleanshutdown is given a path, an keyy:value of shutdown:unclean is added to the returned data. The documentation states that the key should be \(aquncleanshutdown\(aq and that the value should either be True or False. This is fixed in the code .IP \(bu 2 @@ -556398,7 +558426,7 @@ d73a7d6c4d Merge remote\-tracking branch \(aqupstream/2015.5\(aq into merge\-for 56544a77f6 Update user home event when createhome is set to False .UNINDENT .IP \(bu 2 -1a5d585d91 Merge pull request \fI\%#30127\fP from jsutton/clarify\-documenation\-for\-random_master +1a5d585d91 Merge pull request \fI\%#30127\fP from jsutton/clarify\-documentation\-for\-random_master .INDENT 2.0 .IP \(bu 2 01dbf385ef Adding random_master to reference and updating master_shuffle. Adding master_shuffle to the minion example config file as it is needed for multi\-master PKI. @@ -556830,13 +558858,13 @@ a257249789 Add versionadded to SSH Port docs 0bb83e51aa Updated Cloud msic section. .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#30029\fP: (\fI\%terminalmage\fP) git.latest: Fix handling of nonexistant branches +\fBPR\fP \fI\%#30029\fP: (\fI\%terminalmage\fP) git.latest: Fix handling of nonexistent branches @ \fI2015\-12\-28 19:39:29 UTC\fP .INDENT 2.0 .IP \(bu 2 -a5f7d9c2fc Merge pull request \fI\%#30029\fP from terminalmage/git.latest\-nonexistant\-branch +a5f7d9c2fc Merge pull request \fI\%#30029\fP from terminalmage/git.latest\-nonexistent\-branch .IP \(bu 2 -0b95894c9f git.latest: Fix handling of nonexistant branches +0b95894c9f git.latest: Fix handling of nonexistent branches .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#30016\fP: (\fI\%anlutro\fP) Properly normalize locales in locale.gen_locale @@ -557099,7 +559127,7 @@ e865c787a4 Merge pull request \fI\%#29832\fP from jleimbach/fix\-keyboard.py\-fo 3b7f5540ec Add vSphere module to doc ref module tree .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#29751\fP: (\fI\%ether42\fP) mod_hostname behavior is systemd dependant (refs: \fI\%#29767\fP) +\fBISSUE\fP \fI\%#29751\fP: (\fI\%ether42\fP) mod_hostname behavior is systemd dependent (refs: \fI\%#29767\fP) .IP \(bu 2 \fBPR\fP \fI\%#29767\fP: (\fI\%abednarik\fP) Hosts file update in mod_hostname. @ \fI2015\-12\-17 18:31:18 UTC\fP @@ -557330,7 +559358,7 @@ f8c34b0c76 version updated .IP \(bu 2 7c50533d3f Merge pull request \fI\%#29683\fP from rallytime/vsan_fixes .IP \(bu 2 -afc003079e Catch more specifc error to pass the error message through elegantly. +afc003079e Catch more specific error to pass the error message through elegantly. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#29687\fP: (\fI\%basepi\fP) [2015.8] Merge forward from 2015.5 to 2015.8 @@ -557557,9 +559585,9 @@ f29e0a7021 Merge pull request \fI\%#29565\fP from bdrung/2015.8 .IP \(bu 2 b96d8ff1d9 Minor update to release notes for missing fix .IP \(bu 2 -e72354aac4 Fix typo specfic \-> specific +e72354aac4 Fix typo of specific .IP \(bu 2 -5708355762 Fix typo comparsion \-> comparison +5708355762 Fix typo of comparison .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#29540\fP: (\fI\%basepi\fP) [2015.8] Merge forward from 2015.5 to 2015.8 @@ -557973,7 +560001,7 @@ f0a4d93077 Add rate limiting to linode .IP \(bu 2 8fe39d0ef8 Merge pull request \fI\%#29400\fP from twangboy/fix_19332 .IP \(bu 2 -7bdddaca53 Fixed grammer +7bdddaca53 Fixed grammar .IP \(bu 2 d965d00a09 Fix \fI\%#19332\fP .UNINDENT @@ -558706,7 +560734,17 @@ Total Issue References: \fB146\fP .IP \(bu 2 Total PR References: \fB312\fP .IP \(bu 2 -Contributors: \fB74\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%JohannesEbke\fP, \fI\%RabidCicada\fP, \fI\%Talkless\fP, \fI\%The\-Loeki\fP, \fI\%abednarik\fP, \fI\%anlutro\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%cachedout\fP, \fI\%captaininspiration\fP, \fI\%clarkperkins\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%darix\fP, \fI\%dmacvicar\fP, \fI\%dr4Ke\fP, \fI\%dschaller\fP, \fI\%edencrane\fP, \fI\%garethgreenaway\fP, \fI\%gladiatr72\fP, \fI\%gtmanfred\fP, \fI\%iacopo\-papalini\fP, \fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jakehilton\fP, \fI\%jespada\fP, \fI\%jfindlay\fP, \fI\%joejulian\fP, \fI\%justinta\fP, \fI\%kiorky\fP, \fI\%kraney\fP, \fI\%llua\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%mew1033\fP, \fI\%mlalpho\fP, \fI\%moltob\fP, \fI\%multani\fP, \fI\%myii\fP, \fI\%opdude\fP, \fI\%paiou\fP, \fI\%pass\-by\-value\fP, \fI\%peripatetic\-sojourner\fP, \fI\%pprince\fP, \fI\%rallytime\fP, \fI\%redmcg\fP, \fI\%replicant0wnz\fP, \fI\%rhansen\fP, \fI\%rmtmckenzie\fP, \fI\%s0undt3ch\fP, \fI\%sakateka\fP, \fI\%sbreidba\fP, \fI\%seanjnkns\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, \fI\%skizunov\fP, \fI\%szeestraten\fP, \fI\%tbaker57\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thusoy\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, \fI\%virtualguy\fP, \fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%xmj\fP, \fI\%xopher\-mc\fP, \fI\%yannis666\fP, \fI\%youngnick\fP, \fI\%zygiss\fP) +Contributors: \fB74\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%JohannesEbke\fP, \fI\%RabidCicada\fP, \fI\%Talkless\fP, +\fI\%The\-Loeki\fP, \fI\%abednarik\fP, \fI\%anlutro\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%cachedout\fP, +\fI\%captaininspiration\fP, \fI\%clarkperkins\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%darix\fP, \fI\%dmacvicar\fP, \fI\%dr4Ke\fP, +\fI\%dschaller\fP, \fI\%edencrane\fP, \fI\%garethgreenaway\fP, \fI\%gladiatr72\fP, \fI\%gtmanfred\fP, \fI\%iacopo\-papalini\fP, +\fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jakehilton\fP, \fI\%jespada\fP, \fI\%jfindlay\fP, \fI\%joejulian\fP, +\fI\%justinta\fP, \fI\%kiorky\fP, \fI\%kraney\fP, \fI\%llua\fP, \fI\%mcalmer\fP, \fI\%mchugh19\fP, \fI\%mew1033\fP, \fI\%mlalpho\fP, +\fI\%moltob\fP, \fI\%multani\fP, \fI\%myii\fP, \fI\%opdude\fP, \fI\%paiou\fP, \fI\%pass\-by\-value\fP, \fI\%peripatetic\-sojourner\fP, +\fI\%pprince\fP, \fI\%rallytime\fP, \fI\%redmcg\fP, \fI\%replicant0wnz\fP, \fI\%rhansen\fP, \fI\%rmtmckenzie\fP, \fI\%s0undt3ch\fP, +\fI\%sakateka\fP, \fI\%sbreidba\fP, \fI\%seanjnkns\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, \fI\%skizunov\fP, \fI\%szeestraten\fP, +\fI\%tbaker57\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thusoy\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, \fI\%virtualguy\fP, +\fI\%vutny\fP, \fI\%whiteinge\fP, \fI\%xmj\fP, \fI\%xopher\-mc\fP, \fI\%yannis666\fP, \fI\%youngnick\fP, \fI\%zygiss\fP) .UNINDENT .SS Security Fix .sp @@ -558788,7 +560826,7 @@ fefb694104 Merge pull request \fI\%#31947\fP from cro/bp\-31601 .IP \(bu 2 d661081016 Lint. .IP \(bu 2 -59e0a6f923 Dont add this file +59e0a6f923 Don\(aqt add this file .IP \(bu 2 c68b968403 Old\-style proxymodules need to be setup earlier in minion init. Also include more correct comments in config.py .UNINDENT @@ -559118,7 +561156,7 @@ aa120cb716 Merge pull request \fI\%#31818\fP from alprs/fix\-event_logging_spam .IP \(bu 2 \fBISSUE\fP \fI\%#31293\fP: (\fI\%deuscapturus\fP) Git Pillars lose HEAD reference over time (refs: \fI\%#31836\fP) .IP \(bu 2 -\fBISSUE\fP \fI\%#29239\fP: (\fI\%timwsuqld\fP) Occasionaly git_pillar pull fails causing incorrect results of highstate (when running highstate for multiple minions) (refs: \fI\%#31836\fP) +\fBISSUE\fP \fI\%#29239\fP: (\fI\%timwsuqld\fP) Occasionally git_pillar pull fails causing incorrect results of highstate (when running highstate for multiple minions) (refs: \fI\%#31836\fP) .IP \(bu 2 \fBPR\fP \fI\%#31836\fP: (\fI\%terminalmage\fP) Fix git_pillar race condition @ \fI2016\-03\-14 15:48:28 UTC\fP @@ -559352,7 +561390,7 @@ e4df5d9a55 Fix typo in example for section \fIwinrepo_dir_ng\fP .IP \(bu 2 ec90294442 Merge pull request \fI\%#31733\fP from jacobhammons/cloud\-docs .IP \(bu 2 -209c641a41 Made udpates as suggested by @rallytime +209c641a41 Made updates as suggested by @rallytime .IP \(bu 2 26d4991cb3 moved previous intro to new quick start topic (topics/cloud/qs.rst) added new intro that explains the salt cloud configuration files added an inheritance and minion startup state example to topics/cloud/config.rst .UNINDENT @@ -559403,13 +561441,13 @@ fd3610c6a4 Merge pull request \fI\%#31770\fP from alprs/fix\-influxdb_user 1349bdd2e8 fix influxdb user functionality for version 0.9+ .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#31743\fP: (\fI\%Talkless\fP) Fix parentheses missmatch in documentation +\fBPR\fP \fI\%#31743\fP: (\fI\%Talkless\fP) Fix parentheses mismatch in documentation @ \fI2016\-03\-08 18:01:23 UTC\fP .INDENT 2.0 .IP \(bu 2 c0868307df Merge pull request \fI\%#31743\fP from Talkless/patch\-1 .IP \(bu 2 -26ff46dbc6 Fix parenthesis missmatch in documentation +26ff46dbc6 Fix parenthesis mismatch in documentation .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#31162\fP: (\fI\%isbm\fP) Remove MD5 digest from everywhere and default to SHA256 @@ -559454,7 +561492,7 @@ efb78f1055 Remove SHA1 to SHA265 by default .IP \(bu 2 f0d931f4d0 Use hash_type configuration for the Cloud .IP \(bu 2 -95cb59dec7 Set defalt hash as SHA1 in config and explain why. +95cb59dec7 Set default hash as SHA1 in config and explain why. .IP \(bu 2 8f9543c292 Set config hash_type to SHA1 .IP \(bu 2 @@ -560496,7 +562534,7 @@ ab9d9e7008 Can\(aqt add a tuple and a string. .IP \(bu 2 274e6467be do not change kwargs in refresh while checking a value .IP \(bu 2 -644b14c273 simplify checking the refresh paramater +644b14c273 simplify checking the refresh parameter .IP \(bu 2 db0e0de2fd add refresh option to more functions .IP \(bu 2 @@ -560527,7 +562565,7 @@ c1e0ff7785 Fix Logrotate module. .IP \(bu 2 \fBISSUE\fP \fI\%#28004\fP: (\fI\%warden\fP) dockerng.image_present should allow public repository pulling by default (refs: \fI\%#31354\fP) .IP \(bu 2 -\fBPR\fP \fI\%#31354\fP: (\fI\%ticosax\fP) [dockerng] Dont require auth for all registries +\fBPR\fP \fI\%#31354\fP: (\fI\%ticosax\fP) [dockerng] Don\(aqt require auth for all registries @ \fI2016\-02\-20 05:45:10 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -560835,7 +562873,7 @@ dc2e7c8956 Merge pull request \fI\%#31253\fP from gtmanfred/2015.8 .IP \(bu 2 29e3dd091d Merge pull request \fI\%#31271\fP from rallytime/bp\-30689 .IP \(bu 2 -3dae79d516 fix nested grains always show update due to __grains__.get() not supporting the ":" seperator +3dae79d516 fix nested grains always show update due to __grains__.get() not supporting the ":" separator .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#30461\fP: (\fI\%jfindlay\fP) update documentation on bootstrap\-supported platforms (refs: \fI\%#31255\fP) @@ -561070,7 +563108,7 @@ b58783b895 add 2015.8.7 release notes .IP \(bu 2 47ecb7a150 include all ips in public_ips or private_ips .IP \(bu 2 -b2e8202f5d dont exit on a missing server +b2e8202f5d don\(aqt exit on a missing server .IP \(bu 2 8ad1ee6db4 clean up references to access_ip extra network .UNINDENT @@ -561737,49 +563775,49 @@ e79321b418 Move checks for private_key file existence and permissions to create .IP \(bu 2 4372851ad9 Merge pull request \fI\%#30895\fP from bdrung/2015.8 .IP \(bu 2 -708f2ff8ea Fix typo reponse \-> response +708f2ff8ea Fix typo of response .IP \(bu 2 -72c4eab6d7 Fix typo propogate \-> propagate +72c4eab6d7 Fix typo of propagate .IP \(bu 2 -4912e365cb Fix typo directores \-> directories +4912e365cb Fix typo of directories .IP \(bu 2 -74c8aba03e Fix typo exeption \-> exception +74c8aba03e Fix typo of exception .IP \(bu 2 4692d84b07 Fix typos of improvement .IP \(bu 2 -213fc2d858 Fix typo occuring \-> occurring +213fc2d858 Fix typo of occurring .IP \(bu 2 -fe6124003b Fix typo nonexistant \-> nonexistent +fe6124003b Fix typo of nonexistent .IP \(bu 2 -56ce7479b1 Fix typo catched \-> caught +56ce7479b1 Fix typo of caught .IP \(bu 2 -821e690e65 Fix typo develoment \-> development +821e690e65 Fix typo of development .IP \(bu 2 -b51279e086 Fix typo overide \-> override +b51279e086 Fix typo of override .IP \(bu 2 -4f2f04ea7d Fix typo relevent \-> relevant +4f2f04ea7d Fix typo of relevant .IP \(bu 2 -fe8be562c5 Fix typo existance \-> existence +fe8be562c5 Fix typo of existence .IP \(bu 2 -4a2f4de1a8 Fix typo accross \-> across +4a2f4de1a8 Fix typo of across .IP \(bu 2 -9ae50c993e Fix typo Lenth \-> Length +9ae50c993e Fix typo of Length .IP \(bu 2 -20e79981e1 Fix typo preferrably \-> preferably +20e79981e1 Fix typo of preferably .IP \(bu 2 -f8d9f608dd Fix typo addres \-> address +f8d9f608dd Fix typo of address .IP \(bu 2 -a7f12a13f0 Fix typo keywork \-> keyword +a7f12a13f0 Fix typo of keyword .IP \(bu 2 -bf92c3663b Fix typo formating \-> formatting +bf92c3663b Fix typo of formatting .IP \(bu 2 -ca4450d881 Fix typo wont \-> won\(aqt +ca4450d881 Fix typo of won\(aqt .IP \(bu 2 -cd72b12161 Fix typo thats \-> that\(aqs +cd72b12161 Fix typo of that\(aqs .IP \(bu 2 -6db9724ec7 Fix typo doesnt \-> doesn\(aqt +6db9724ec7 Fix typo of doesn\(aqt .IP \(bu 2 -58d46a7e98 Fix typo certficate \-> certificate +58d46a7e98 Fix typo of certificate .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#30887\fP: (\fI\%anlutro\fP) salt\-ssh fails on import msgpack \- 2015.8 (refs: \fI\%#30889\fP) @@ -562522,7 +564560,7 @@ f5fd38624e Remove bad symlinks in osx pkg dirs 57b7e6cc93 Add glance state to list of state modules .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#19288\fP: (\fI\%oba11\fP) AssociatePublicIpAddress doesnt work with salt\-cloud 2014.7.0 (refs: \fI\%#20972\fP, \fI\%#30591\fP) +\fBISSUE\fP \fI\%#19288\fP: (\fI\%oba11\fP) AssociatePublicIpAddress doesn\(aqt work with salt\-cloud 2014.7.0 (refs: \fI\%#20972\fP, \fI\%#30591\fP) .IP \(bu 2 \fBPR\fP \fI\%#30618\fP: (\fI\%rallytime\fP) Back\-port \fI\%#30591\fP to 2015.8 @ \fI2016\-01\-25 23:55:20 UTC\fP @@ -562600,7 +564638,17 @@ Total Issue References: \fB110\fP .IP \(bu 2 Total PR References: \fB264\fP .IP \(bu 2 -Contributors: \fB71\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%DylanFrese\fP, \fI\%Ferbla\fP, \fI\%Kurocon\fP, \fI\%Lothiraldan\fP, \fI\%RuriRyan\fP, \fI\%Talkless\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%Xiami2012\fP, \fI\%abednarik\fP, \fI\%afletch\fP, \fI\%ahammond\fP, \fI\%ahus1\fP, \fI\%aletourneau\fP, \fI\%alxf\fP, \fI\%amontalban\fP, \fI\%anlutro\fP, \fI\%arthurlogilab\fP, \fI\%atengler\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%bradthurber\fP, \fI\%cachedout\fP, \fI\%captaininspiration\fP, \fI\%cedwards\fP, \fI\%clarkperkins\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%dmurphy18\fP, \fI\%exowaucka\fP, \fI\%garethgreenaway\fP, \fI\%guettli\fP, \fI\%idonin\fP, \fI\%isbm\fP, \fI\%jacobhammons\fP, \fI\%jbonachera\fP, \fI\%jfindlay\fP, \fI\%jfray\fP, \fI\%junster1\fP, \fI\%justinta\fP, \fI\%krak3n\fP, \fI\%lalmeras\fP, \fI\%lloydoliver\fP, \fI\%lomeroe\fP, \fI\%mcalmer\fP, \fI\%mitar\fP, \fI\%mrproper\fP, \fI\%multani\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%onorua\fP, \fI\%paclat\fP, \fI\%papertigers\fP, \fI\%rallytime\fP, \fI\%rkgrunt\fP, \fI\%sakateka\fP, \fI\%sbreidba\fP, \fI\%schancel\fP, \fI\%sjorge\fP, \fI\%stk0vrfl0w\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%ticosax\fP, \fI\%tomlaredo\fP, \fI\%twangboy\fP, \fI\%twellspring\fP, \fI\%vutny\fP, \fI\%whiteinge\fP) +Contributors: \fB71\fP (\fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%DylanFrese\fP, \fI\%Ferbla\fP, \fI\%Kurocon\fP, +\fI\%Lothiraldan\fP, \fI\%RuriRyan\fP, \fI\%Talkless\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%Xiami2012\fP, \fI\%abednarik\fP, +\fI\%afletch\fP, \fI\%ahammond\fP, \fI\%ahus1\fP, \fI\%aletourneau\fP, \fI\%alxf\fP, \fI\%amontalban\fP, \fI\%anlutro\fP, +\fI\%arthurlogilab\fP, \fI\%atengler\fP, \fI\%basepi\fP, \fI\%bdrung\fP, \fI\%bradthurber\fP, \fI\%cachedout\fP, +\fI\%captaininspiration\fP, \fI\%cedwards\fP, \fI\%clarkperkins\fP, \fI\%clinta\fP, \fI\%cro\fP, \fI\%dmurphy18\fP, +\fI\%exowaucka\fP, \fI\%garethgreenaway\fP, \fI\%guettli\fP, \fI\%idonin\fP, \fI\%isbm\fP, \fI\%jacobhammons\fP, \fI\%jbonachera\fP, +\fI\%jfindlay\fP, \fI\%jfray\fP, \fI\%junster1\fP, \fI\%justinta\fP, \fI\%krak3n\fP, \fI\%lalmeras\fP, \fI\%lloydoliver\fP, +\fI\%lomeroe\fP, \fI\%mcalmer\fP, \fI\%mitar\fP, \fI\%mrproper\fP, \fI\%multani\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%onorua\fP, +\fI\%paclat\fP, \fI\%papertigers\fP, \fI\%rallytime\fP, \fI\%rkgrunt\fP, \fI\%sakateka\fP, \fI\%sbreidba\fP, \fI\%schancel\fP, +\fI\%sjorge\fP, \fI\%stk0vrfl0w\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%ticosax\fP, \fI\%tomlaredo\fP, +\fI\%twangboy\fP, \fI\%twellspring\fP, \fI\%vutny\fP, \fI\%whiteinge\fP) .UNINDENT .SS Important Post\-Upgrade Instructions for Linux Mint .sp @@ -562726,7 +564774,7 @@ a129d05b6d Update the release process docs \fBPR\fP \fI\%#33224\fP: (\fI\%rallytime\fP) Make note of files that begin with \(aq_\(aq in master.d or minion.d dirs .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#31975\fP: (\fI\%rajvidhimar\fP) Docstrings not reflected in the salt documenation. (refs: \fI\%#33150\fP) +\fBISSUE\fP \fI\%#31975\fP: (\fI\%rajvidhimar\fP) Docstrings not reflected in the salt documentation. (refs: \fI\%#33150\fP) .INDENT 2.0 .IP \(bu 2 \fBPR\fP \fI\%#33150\fP: (\fI\%rallytime\fP) Gate jnpr imports in salt.proxy.junos.py @@ -562828,7 +564876,7 @@ e0da8fda7d [2015.5] Update to latest bootstrap script v2016.05.10 (\fI\%#33155\f \fBPR\fP \fI\%#33142\fP: (\fI\%cachedout\fP) Hash fileclients by opts .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#22142\fP: (\fI\%multani\fP) State \fIacl.present\fP doesn\(aqt allow to set "default" ACLs (refs: \fI\%#31769\fP) +\fBISSUE\fP \fI\%#22142\fP: (\fI\%multani\fP) State \fIacl.present\fP doesn\(aqt allow setting "default" ACLs (refs: \fI\%#31769\fP) .INDENT 2.0 .IP \(bu 2 \fBPR\fP \fI\%#33139\fP: (\fI\%rallytime\fP) Back\-port \fI\%#31769\fP to 2015.8 @@ -563424,7 +565472,7 @@ d912f1c3c6 json encode arguments passed to an execution module function call \fBISSUE\fP \fI\%#32229\fP: (\fI\%seanjnkns\fP) 2015.8.8.2: pkg.installed fails to update packages with epoch (refs: \fI\%#32563\fP) .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#32563\fP: (\fI\%terminalmage\fP) yumpkg: Ignore epoch in version comparison for explict versions without an epoch +\fBPR\fP \fI\%#32563\fP: (\fI\%terminalmage\fP) yumpkg: Ignore epoch in version comparison for explicit versions without an epoch .IP \(bu 2 \fBPR\fP \fI\%#32640\fP: (\fI\%nmadhok\fP) [2015.8] \- Fixing critical bug to remove only the specified Host instead of the entire Host cluster .IP \(bu 2 @@ -563698,13 +565746,13 @@ e1ffbd615a Fixes \fI\%saltstack/salt#28262\fP for 2015.5 branch .IP \(bu 2 \fBISSUE\fP \fI\%#31632\fP: (\fI\%zieba88\fP) salt\-cloud map parallel provisioning \-P option failed on 2015.8.5 (refs: \fI\%#32425\fP) .IP \(bu 2 -\fBPR\fP \fI\%#32425\fP: (\fI\%cachedout\fP) Fix salt\-cloud paralell provisioning +\fBPR\fP \fI\%#32425\fP: (\fI\%cachedout\fP) Fix salt\-cloud parallel provisioning @ \fI2016\-04\-07 21:52:06 UTC\fP .INDENT 2.0 .IP \(bu 2 c07e02bacb Merge pull request \fI\%#32425\fP from cachedout/issue_31632 .IP \(bu 2 -127c0829ee Fix salt\-cloud paralell provisioning +127c0829ee Fix salt\-cloud parallel provisioning .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#32323\fP: (\fI\%mcalmer\fP) fix sorting by latest version when called with an attribute @@ -563975,37 +566023,37 @@ ffe585f078 Re\-add shebang to ssh\-id\-wrapper shell script .IP \(bu 2 f16e332b3a Merge pull request \fI\%#32326\fP from bdrung/fix\-typos .IP \(bu 2 -a7db152333 Fix typo dont \-> don\(aqt +a7db152333 Fix typo of don\(aqt .IP \(bu 2 -d4c037301b Fix typo missmatch \-> mismatch +d4c037301b Fix typo of mismatch .IP \(bu 2 -70dba70ff0 Fix typo additonal \-> addition +70dba70ff0 Fix typo of addition .IP \(bu 2 -68c60903aa Fix typo mutliple \-> multiple +68c60903aa Fix typo of multiple .IP \(bu 2 -0f2c779b90 Fix typo fucntion \-> function +0f2c779b90 Fix typo of function .IP \(bu 2 -0c9e4c8c80 Fix typo avilable \-> available +0c9e4c8c80 Fix typo of available .IP \(bu 2 -920abe2ec7 Fix typo formated \-> formatted +920abe2ec7 Fix typo of formatted .IP \(bu 2 -e56dd4bb23 Fix typo ommitted \-> omitted +e56dd4bb23 Fix typo of omitted .IP \(bu 2 -f99e6f1f13 Fix typo ouptut \-> output +f99e6f1f13 Fix typo of output .IP \(bu 2 -d3804094f2 Fix typo wether \-> whether +d3804094f2 Fix typo of whether .IP \(bu 2 -538fb6fae2 Fix typo perfomed \-> performed +538fb6fae2 Fix typo of performed .IP \(bu 2 -db7af998ee Fix typo santized \-> sanitized +db7af998ee Fix typo of sanitized .IP \(bu 2 -d7af01da2b Fix typo coresponding \-> corresponding +d7af01da2b Fix typo of corresponding .IP \(bu 2 -301e78b5be Fix typo vaules \-> values +301e78b5be Fix typo of values .IP \(bu 2 8cada9573f Fix typos of retrieve .IP \(bu 2 -b484d6f9c9 Fix typo directorys \-> directories +b484d6f9c9 Fix typo of directories .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#32300\fP: (\fI\%twangboy\fP) Add documentation to disable winrepo/winrepo_ng @@ -564213,7 +566261,7 @@ dc2a3b81ac Ignore lsb codename from os\-release for newest RHEL .IP \(bu 2 bf59f06733 Merge pull request \fI\%#32217\fP from jacobhammons/dot8 .IP \(bu 2 -596444e2b4 2015.8.8.2 release notes Adds banner notifiying user when they are viewing release notes for an old release +596444e2b4 2015.8.8.2 release notes Adds banner notifying user when they are viewing release notes for an old release .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#31844\fP: (\fI\%Talkless\fP) slspath is not documented (refs: \fI\%#32197\fP) @@ -564463,9 +566511,9 @@ b98f5517de Updated to conform to proper ret values .IP \(bu 2 d18b4be80b remove whitespace end of line 186:q .IP \(bu 2 -d2b89c85ad fix formating +d2b89c85ad fix formatting .IP \(bu 2 -103cee9e29 cleaned up formating +103cee9e29 cleaned up formatting .IP \(bu 2 7a4d7f0bff added whitespace .IP \(bu 2 @@ -565032,7 +567080,14 @@ Total Issue References: \fB30\fP .IP \(bu 2 Total PR References: \fB177\fP .IP \(bu 2 -Contributors: \fB49\fP (\fI\%Arabus\fP, \fI\%Lothiraldan\fP, \fI\%Snergster\fP, \fI\%TaiSHiNet\fP, \fI\%The\-Loeki\fP, \fI\%UtahDave\fP, \fI\%aboe76\fP, \fI\%ahus1\fP, \fI\%basepi\fP, \fI\%bastiaanb\fP, \fI\%bradthurber\fP, \fI\%cachedout\fP, \fI\%cellscape\fP, \fI\%corywright\fP, \fI\%cro\fP, \fI\%dennisjac\fP, \fI\%dmyerscough\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, \fI\%gladiatr72\fP, \fI\%gtmanfred\fP, \fI\%iggy\fP, \fI\%ionutbalutoiu\fP, \fI\%jacobhammons\fP, \fI\%jayeshka\fP, \fI\%jfindlay\fP, \fI\%joejulian\fP, \fI\%jpic\fP, \fI\%justinta\fP, \fI\%kaidokert\fP, \fI\%kaithar\fP, \fI\%kiorky\fP, \fI\%lisa2lisa\fP, \fI\%msciciel\fP, \fI\%nleib\fP, \fI\%notpeter\fP, \fI\%optix2000\fP, \fI\%rahulhan\fP, \fI\%rallytime\fP, \fI\%rubic\fP, \fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, \fI\%slinu3d\fP, \fI\%steverweber\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%ticosax\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) +Contributors: \fB49\fP (\fI\%Arabus\fP, \fI\%Lothiraldan\fP, \fI\%Snergster\fP, \fI\%TaiSHiNet\fP, \fI\%The\-Loeki\fP, +\fI\%UtahDave\fP, \fI\%aboe76\fP, \fI\%ahus1\fP, \fI\%basepi\fP, \fI\%bastiaanb\fP, \fI\%bradthurber\fP, \fI\%cachedout\fP, +\fI\%cellscape\fP, \fI\%corywright\fP, \fI\%cro\fP, \fI\%dennisjac\fP, \fI\%dmyerscough\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, +\fI\%gladiatr72\fP, \fI\%gtmanfred\fP, \fI\%iggy\fP, \fI\%ionutbalutoiu\fP, \fI\%jacobhammons\fP, \fI\%jayeshka\fP, +\fI\%jfindlay\fP, \fI\%joejulian\fP, \fI\%jpic\fP, \fI\%justinta\fP, \fI\%kaidokert\fP, \fI\%kaithar\fP, \fI\%kiorky\fP, +\fI\%lisa2lisa\fP, \fI\%msciciel\fP, \fI\%nleib\fP, \fI\%notpeter\fP, \fI\%optix2000\fP, \fI\%rahulhan\fP, \fI\%rallytime\fP, +\fI\%rubic\fP, \fI\%ryan\-lane\fP, \fI\%s0undt3ch\fP, \fI\%slinu3d\fP, \fI\%steverweber\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, +\fI\%ticosax\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) .UNINDENT .SS Cloud Runner Changes .sp @@ -565224,7 +567279,7 @@ ebff1ff967 Merge pull request \fI\%#23956\fP from rallytime/bp\-23906 .IP \(bu 2 9d87fd335c add proper marker for format argument .IP \(bu 2 -197688ef0c 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. +197688ef0c 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. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#19852\fP: (\fI\%TaiSHiNet\fP) DigitalOcean APIv2 can\(aqt delete machines when there is only 1 page (refs: \fI\%#23955\fP) @@ -565680,7 +567735,7 @@ cba47f6856 make saltify to use standard boostrap procedure, therefore providing .IP \(bu 2 558798df1f Fix net_io_counters deprecation issue .IP \(bu 2 -8140f92ba8 Override unecessary pylint errors +8140f92ba8 Override unnecessary pylint errors .IP \(bu 2 7d02ad4f06 Fix some of the mock names for the new API .IP \(bu 2 @@ -565692,7 +567747,7 @@ f8edf72f98 Use new psutil API in ps module .IP \(bu 2 e48982ff9c Fix version checking in psutil_compat .IP \(bu 2 -93ee411fd5 Create compatability psutil. psutil 3.0 drops 1.0 API, but we still support old psutil versions. +93ee411fd5 Create compatibility psutil. psutil 3.0 drops 1.0 API, but we still support old psutil versions. .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#23782\fP: (\fI\%terminalmage\fP) Replace "command \-v" with "which" and get rid of spurious log messages @@ -565738,7 +567793,7 @@ fb24f0cf02 Report failure when failed to create/clone LXC container .IP \(bu 2 2d9aa2bb97 Avoid shadowing variables in lxc module .IP \(bu 2 -792e1021f2 Allow to override profile options in lxc.cloud_init_interface +792e1021f2 Allow overriding profile options in lxc.cloud_init_interface .IP \(bu 2 42bd64b9b3 Return changes on successful lxc.create from salt\-cloud .IP \(bu 2 @@ -566028,13 +568083,13 @@ f95ca3188f Merge pull request \fI\%#23703\fP from jayeshka/lvs_service_states\-u ecff2181e4 fix lvs_service .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#23686\fP: (\fI\%jfindlay\fP) remove superflous return statement +\fBPR\fP \fI\%#23686\fP: (\fI\%jfindlay\fP) remove superfluous return statement @ \fI2015\-05\-14 14:20:18 UTC\fP .INDENT 2.0 .IP \(bu 2 39973d4095 Merge pull request \fI\%#23686\fP from jfindlay/fix_lvs_server .IP \(bu 2 -5aaeb73532 remove superflous return statement +5aaeb73532 remove superfluous return statement .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#23690\fP: (\fI\%rallytime\fP) Backport \fI\%#23424\fP to 2015.5 @@ -566194,11 +568249,11 @@ c838a22377 unit tests for grains.append module function e96c5c5bf3 Merge pull request \fI\%#23474\fP from dr4Ke/fix_grains.append_nested .INDENT 2.0 .IP \(bu 2 -a01a5bb51e grains.get, parameter delimititer, versionadded: 2014.7.6 +a01a5bb51e grains.get, parameter delimiter, versionadded: 2014.7.6 .IP \(bu 2 b39f50475d remove debugging output .IP \(bu 2 -b6e15e295c fix grains.append in nested dictionnary grains \fI\%#23411\fP +b6e15e295c fix grains.append in nested dictionary grains \fI\%#23411\fP .UNINDENT .IP \(bu 2 ab7e1aed8e Merge pull request \fI\%#23537\fP from t0rrant/patch\-1 @@ -566221,7 +568276,7 @@ ef4c6adae3 Remove another unused import .IP \(bu 2 73cfda751a Remove unused import .IP \(bu 2 -52b68d695a Use the zip_longest from six module for python 3 compatiblity +52b68d695a Use the zip_longest from six module for python 3 compatibility .IP \(bu 2 18d5ff9a8e Fix salt.state.file._unify_sources_and_hashes when sources is used without sources_hashes .UNINDENT @@ -566953,7 +569008,7 @@ b751a7281c Inject local minion config into shim if available 02658b1e60 Merge pull request \fI\%#23344\fP from cachedout/issue_22742 .INDENT 2.0 .IP \(bu 2 -5adc96ce7f Explicitely set file_client on master +5adc96ce7f Explicitly set file_client on master .UNINDENT .IP \(bu 2 ba7605d1cb Merge pull request \fI\%#23318\fP from cellscape/honor\-seed\-argument @@ -567171,7 +569226,13 @@ Total Issue References: \fB73\fP .IP \(bu 2 Total PR References: \fB162\fP .IP \(bu 2 -Contributors: \fB46\fP (\fI\%AndrewPashkin\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%TheNullByte\fP, \fI\%UtahDave\fP, \fI\%abednarik\fP, \fI\%amontalban\fP, \fI\%anlutro\fP, \fI\%attiasr\fP, \fI\%basepi\fP, \fI\%borgstrom\fP, \fI\%brejoc\fP, \fI\%bstevenson\fP, \fI\%cachedout\fP, \fI\%carlwgeorge\fP, \fI\%efficks\fP, \fI\%gerhardqux\fP, \fI\%gtmanfred\fP, \fI\%heyfife\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%justinta\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%mtorromeo\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%paclat\fP, \fI\%pcn\fP, \fI\%phistrom\fP, \fI\%rallytime\fP, \fI\%robgott\fP, \fI\%sacren\fP, \fI\%sastorsl\fP, \fI\%serge\-p\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thegoodduke\fP, \fI\%toanju\fP, \fI\%tomwalsh\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP, \fI\%yannis666\fP) +Contributors: \fB46\fP (\fI\%AndrewPashkin\fP, \fI\%Ch3LL\fP, \fI\%DmitryKuzmenko\fP, \fI\%TheNullByte\fP, \fI\%UtahDave\fP, +\fI\%abednarik\fP, \fI\%amontalban\fP, \fI\%anlutro\fP, \fI\%attiasr\fP, \fI\%basepi\fP, \fI\%borgstrom\fP, \fI\%brejoc\fP, +\fI\%bstevenson\fP, \fI\%cachedout\fP, \fI\%carlwgeorge\fP, \fI\%efficks\fP, \fI\%gerhardqux\fP, \fI\%gtmanfred\fP, \fI\%heyfife\fP, +\fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%justinta\fP, \fI\%lomeroe\fP, \fI\%lorengordon\fP, \fI\%mtorromeo\fP, \fI\%nmadhok\fP, +\fI\%notpeter\fP, \fI\%paclat\fP, \fI\%pcn\fP, \fI\%phistrom\fP, \fI\%rallytime\fP, \fI\%robgott\fP, \fI\%sacren\fP, \fI\%sastorsl\fP, +\fI\%serge\-p\fP, \fI\%sjmh\fP, \fI\%sjorge\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thegoodduke\fP, +\fI\%toanju\fP, \fI\%tomwalsh\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP, \fI\%yannis666\fP) .UNINDENT .SS Changelog for v2015.5.10..v2015.5.11 .sp @@ -567467,7 +569528,7 @@ f0de1236ec Move the tables of virtual modules to individual documentation pages \fBPR\fP \fI\%#32421\fP: (\fI\%terminalmage\fP) Ignore Raspbian in service.py __virtual__ .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#1409\fP: (\fI\%twinshadow\fP) module/network.py: Interfaces do not list multiple addesses +\fBISSUE\fP \fI\%#1409\fP: (\fI\%twinshadow\fP) module/network.py: Interfaces do not list multiple addresses .IP \(bu 2 \fBISSUE\fP \fI\%saltstack/salt#28262\fP: (\fI\%palica\fP) FreeBSD pkgng provider raising error for minion (refs: \fI\%#32376\fP) .IP \(bu 2 @@ -567673,9 +569734,9 @@ b98f5517de Updated to conform to proper ret values .IP \(bu 2 d18b4be80b remove whitespace end of line 186:q .IP \(bu 2 -d2b89c85ad fix formating +d2b89c85ad fix formatting .IP \(bu 2 -103cee9e29 cleaned up formating +103cee9e29 cleaned up formatting .IP \(bu 2 7a4d7f0bff added whitespace .IP \(bu 2 @@ -568577,7 +570638,13 @@ Total Issue References: \fB36\fP .IP \(bu 2 Total PR References: \fB145\fP .IP \(bu 2 -Contributors: \fB49\fP (\fI\%Sacro\fP, \fI\%The\-Loeki\fP, \fI\%YanChii\fP, \fI\%aboe76\fP, \fI\%anlutro\fP, \fI\%awdrius\fP, \fI\%basepi\fP, \fI\%cdarwin\fP, \fI\%cedwards\fP, \fI\%clan\fP, \fI\%corywright\fP, \fI\%cro\fP, \fI\%djcrabhat\fP, \fI\%dmyerscough\fP, \fI\%dr4Ke\fP, \fI\%fayetted\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, \fI\%ghost\fP, \fI\%hazelesque\fP, \fI\%hvnsweeting\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jayeshka\fP, \fI\%jbq\fP, \fI\%jfindlay\fP, \fI\%joejulian\fP, \fI\%justinta\fP, \fI\%kartiksubbarao\fP, \fI\%kiorky\fP, \fI\%merll\fP, \fI\%msteed\fP, \fI\%neogenix\fP, \fI\%nicholascapo\fP, \fI\%nleib\fP, \fI\%pengyao\fP, \fI\%pruiz\fP, \fI\%rallytime\fP, \fI\%randybias\fP, \fI\%ryan\-lane\fP, \fI\%steverweber\fP, \fI\%swdream\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thcipriani\fP, \fI\%thusoy\fP, \fI\%trevor\-h\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) +Contributors: \fB49\fP (\fI\%Sacro\fP, \fI\%The\-Loeki\fP, \fI\%YanChii\fP, \fI\%aboe76\fP, \fI\%anlutro\fP, \fI\%awdrius\fP, +\fI\%basepi\fP, \fI\%cdarwin\fP, \fI\%cedwards\fP, \fI\%clan\fP, \fI\%corywright\fP, \fI\%cro\fP, \fI\%djcrabhat\fP, \fI\%dmyerscough\fP, +\fI\%dr4Ke\fP, \fI\%fayetted\fP, \fI\%galet\fP, \fI\%garethgreenaway\fP, \fI\%ghost\fP, \fI\%hazelesque\fP, \fI\%hvnsweeting\fP, +\fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jayeshka\fP, \fI\%jbq\fP, \fI\%jfindlay\fP, \fI\%joejulian\fP, \fI\%justinta\fP, +\fI\%kartiksubbarao\fP, \fI\%kiorky\fP, \fI\%merll\fP, \fI\%msteed\fP, \fI\%neogenix\fP, \fI\%nicholascapo\fP, \fI\%nleib\fP, +\fI\%pengyao\fP, \fI\%pruiz\fP, \fI\%rallytime\fP, \fI\%randybias\fP, \fI\%ryan\-lane\fP, \fI\%steverweber\fP, \fI\%swdream\fP, +\fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thcipriani\fP, \fI\%thusoy\fP, \fI\%trevor\-h\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) .UNINDENT .SS Changelog for v2015.5.1..v2015.5.2 .sp @@ -568698,7 +570765,7 @@ ca535a6ff4 Add warning about destroying maps .IP \(bu 2 02bfb254d6 Merge pull request \fI\%#24281\fP from steverweber/ipmi_docfix .IP \(bu 2 -dd36f2c555 yaml formating +dd36f2c555 yaml formatting .IP \(bu 2 f6deef3047 include api_kg kwarg in ipmi state .IP \(bu 2 @@ -568848,7 +570915,7 @@ d67a43dc1f more lxc docs .IP \(bu 2 608da5ef5d modules/lxc: merge resolution .IP \(bu 2 -27c4689a24 modules/lxc: more consistent comparsion +27c4689a24 modules/lxc: more consistent comparison .IP \(bu 2 07c365a23b lxc: merge conflict spotted .IP \(bu 2 @@ -569791,7 +571858,7 @@ f7fae26059 Merge pull request \fI\%#23995\fP from makinacorpus/lxc_path_pre .IP \(bu 2 1dc67e5678 lxc: versionadded .IP \(bu 2 -fcad7cb804 lxc: states improvments +fcad7cb804 lxc: states improvements .IP \(bu 2 644bd729f7 lxc: more consistence for profiles .IP \(bu 2 @@ -569888,7 +571955,16 @@ Total Issue References: \fB69\fP .IP \(bu 2 Total PR References: \fB207\fP .IP \(bu 2 -Contributors: \fB62\fP (\fI\%CameronNemo\fP, \fI\%Lanzaa\fP, \fI\%Starblade42\fP, \fI\%The\-Loeki\fP, \fI\%TheScriptSage\fP, \fI\%aboe76\fP, \fI\%ahus1\fP, \fI\%aneeshusa\fP, \fI\%anlutro\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%borutmrak\fP, \fI\%cachedout\fP, \fI\%cgtx\fP, \fI\%codertux\fP, \fI\%cro\fP, \fI\%dkiser\fP, \fI\%driskell\fP, \fI\%eliasp\fP, \fI\%garethgreenaway\fP, \fI\%grischa\fP, \fI\%gthb\fP, \fI\%heewa\fP, \fI\%infestdead\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jayeshka\fP, \fI\%jeanpralo\fP, \fI\%jfindlay\fP, \fI\%jodv\fP, \fI\%joejulian\fP, \fI\%justinta\fP, \fI\%kartiksubbarao\fP, \fI\%kev009\fP, \fI\%kiorky\fP, \fI\%lorengordon\fP, \fI\%msciciel\fP, \fI\%msteed\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%obestwalter\fP, \fI\%pengyao\fP, \fI\%pille\fP, \fI\%porterjamesj\fP, \fI\%pruiz\fP, \fI\%quixoten\fP, \fI\%rallytime\fP, \fI\%rhertzog\fP, \fI\%ruzarowski\fP, \fI\%ryan\-lane\fP, \fI\%steverweber\fP, \fI\%tankywoo\fP, \fI\%tbaker57\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thenewwazoo\fP, \fI\%trevor\-h\fP, \fI\%twangboy\fP, \fI\%variia\fP, \fI\%zefrog\fP, \fI\%zhujinhe\fP) +Contributors: \fB62\fP (\fI\%CameronNemo\fP, \fI\%Lanzaa\fP, \fI\%Starblade42\fP, \fI\%The\-Loeki\fP, \fI\%TheScriptSage\fP, +\fI\%aboe76\fP, \fI\%ahus1\fP, \fI\%aneeshusa\fP, \fI\%anlutro\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%borutmrak\fP, +\fI\%cachedout\fP, \fI\%cgtx\fP, \fI\%codertux\fP, \fI\%cro\fP, \fI\%dkiser\fP, \fI\%driskell\fP, \fI\%eliasp\fP, +\fI\%garethgreenaway\fP, \fI\%grischa\fP, \fI\%gthb\fP, \fI\%heewa\fP, \fI\%infestdead\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, +\fI\%jayeshka\fP, \fI\%jeanpralo\fP, \fI\%jfindlay\fP, \fI\%jodv\fP, \fI\%joejulian\fP, \fI\%justinta\fP, \fI\%kartiksubbarao\fP, +\fI\%kev009\fP, \fI\%kiorky\fP, \fI\%lorengordon\fP, \fI\%msciciel\fP, \fI\%msteed\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, +\fI\%obestwalter\fP, \fI\%pengyao\fP, \fI\%pille\fP, \fI\%porterjamesj\fP, \fI\%pruiz\fP, \fI\%quixoten\fP, \fI\%rallytime\fP, +\fI\%rhertzog\fP, \fI\%ruzarowski\fP, \fI\%ryan\-lane\fP, \fI\%steverweber\fP, \fI\%tankywoo\fP, \fI\%tbaker57\fP, \fI\%techhat\fP, +\fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%thenewwazoo\fP, \fI\%trevor\-h\fP, \fI\%twangboy\fP, \fI\%variia\fP, \fI\%zefrog\fP, +\fI\%zhujinhe\fP) .UNINDENT .SS Changelog for v2015.5.2..v2015.5.3 .sp @@ -569942,7 +572018,7 @@ a98394210e Merge pull request \fI\%#25095\fP from jfindlay/win_groupadd_test .IP \(bu 2 564dffd14a depend on win libs rather than mocking them .IP \(bu 2 -9b9aeb8628 resolved all erors. +9b9aeb8628 resolved all errors. .IP \(bu 2 aaf89354c0 adding win_groupadd unit test case. .UNINDENT @@ -570138,7 +572214,7 @@ e3045be5a9 adding redismod unit test case. a3c1063a37 fix deprecated pymongo usage causing errors in latest pymongo .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#24862\fP: (\fI\%dkatsanikakis\fP) gpg.import_key returns error after succesfully completed (refs: \fI\%#24994\fP, \fI\%#24966\fP) +\fBISSUE\fP \fI\%#24862\fP: (\fI\%dkatsanikakis\fP) gpg.import_key returns error after successfully completed (refs: \fI\%#24994\fP, \fI\%#24966\fP) .IP \(bu 2 \fBPR\fP \fI\%#24994\fP: (\fI\%garethgreenaway\fP) Another Fix to gpg.py in 2015.5 @ \fI2015\-06\-27 22:28:15 UTC\fP @@ -570206,7 +572282,7 @@ a791b23ff9 Merge pull request \fI\%#24977\fP from rallytime/do_move_warning 6b544227ab Only warn about digital ocean deprecation if digital ocean is configured .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#24862\fP: (\fI\%dkatsanikakis\fP) gpg.import_key returns error after succesfully completed (refs: \fI\%#24994\fP, \fI\%#24966\fP) +\fBISSUE\fP \fI\%#24862\fP: (\fI\%dkatsanikakis\fP) gpg.import_key returns error after successfully completed (refs: \fI\%#24994\fP, \fI\%#24966\fP) .IP \(bu 2 \fBPR\fP \fI\%#24966\fP: (\fI\%garethgreenaway\fP) Fixes to gpg.py in 2015.5 @ \fI2015\-06\-25 19:58:49 UTC\fP @@ -570587,11 +572663,11 @@ daa76c34e4 Merge pull request \fI\%#24798\fP from saltstack/revert\-24329\-postg @ \fI2015\-06\-18 17:43:15 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#24749\fP: (\fI\%obestwalter\fP) add windows specfic default for multiprocessing (refs: \fI\%#24791\fP) +\fBPR\fP \fI\%#24749\fP: (\fI\%obestwalter\fP) add windows specific default for multiprocessing (refs: \fI\%#24791\fP) .IP \(bu 2 7073a9f850 Merge pull request \fI\%#24791\fP from rallytime/bp\-24749 .IP \(bu 2 -be43b2b394 add windows specfic default for multiprocessing +be43b2b394 add windows specific default for multiprocessing .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#24792\fP: (\fI\%rallytime\fP) Back\-port \fI\%#24757\fP to 2015.5 @@ -571140,7 +573216,7 @@ a570d7f967 Merge pull request \fI\%#24566\fP from jayeshka/rdp_states\-unit\-tes .IP \(bu 2 \fBISSUE\fP \fI\%#24480\fP: (\fI\%kiorky\fP) [CRITICAL] [2015.5] tls breaks tzinfo (refs: \fI\%#24551\fP) .IP \(bu 2 -\fBPR\fP \fI\%#24551\fP: (\fI\%joejulian\fP) 2015.5 dont pollute environment +\fBPR\fP \fI\%#24551\fP: (\fI\%joejulian\fP) 2015.5 don\(aqt pollute environment @ \fI2015\-06\-11 02:13:06 UTC\fP .INDENT 2.0 .IP \(bu 2 @@ -571533,13 +573609,13 @@ a793c192a6 Avoid extraneous newline character added in last environment variable @ \fI2015\-06\-05 22:32:25 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#24441\fP: (\fI\%arthurlogilab\fP) [doc] Alignement fix on external_auth documentation (refs: \fI\%#24456\fP) +\fBPR\fP \fI\%#24441\fP: (\fI\%arthurlogilab\fP) [doc] Alignment fix on external_auth documentation (refs: \fI\%#24456\fP) .IP \(bu 2 ced558a6e6 Merge pull request \fI\%#24456\fP from rallytime/bp\-24441 .IP \(bu 2 70028553c1 yaml indentations should be 2 spaces .IP \(bu 2 -21b51abf25 [doc] Alignement fix on external_auth documentation +21b51abf25 [doc] Alignment fix on external_auth documentation .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#24397\fP: (\fI\%kiorky\fP) on debian: states.apt should use virtualname as it shadows system apt module (refs: \fI\%#24398\fP, \fI\%#24400\fP, \fI\%#24399\fP) @@ -571875,7 +573951,20 @@ Total Issue References: \fB138\fP .IP \(bu 2 Total PR References: \fB312\fP .IP \(bu 2 -Contributors: \fB92\fP (\fI\%0xf10e\fP, \fI\%AkhterAli\fP, \fI\%BretFisher\fP, \fI\%DmitryKuzmenko\fP, \fI\%EvaSDK\fP, \fI\%GideonRed\-zz\fP, \fI\%JohannesEbke\fP, \fI\%Oro\fP, \fI\%TheBigBear\fP, \fI\%TronPaul\fP, \fI\%UtahDave\fP, \fI\%ahus1\fP, \fI\%alekti\fP, \fI\%alexandrsushko\fP, \fI\%amontalban\fP, \fI\%andre\-luiz\-dos\-santos\fP, \fI\%aneeshusa\fP, \fI\%anlutro\fP, \fI\%asyncsrc\fP, \fI\%attiasr\fP, \fI\%babilen\fP, \fI\%basepi\fP, \fI\%bbinet\fP, \fI\%bclermont\fP, \fI\%bechtoldt\fP, \fI\%blackduckx\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%colekowalski\fP, \fI\%cro\fP, \fI\%d\-\-j\fP, \fI\%davidjb\fP, \fI\%denmat\fP, \fI\%derBroBro\fP, \fI\%dkiser\fP, \fI\%driskell\fP, \fI\%egarbi\fP, \fI\%fleaflicker\fP, \fI\%garethgreenaway\fP, \fI\%gmcwhistler\fP, \fI\%gtmanfred\fP, \fI\%hasues\fP, \fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jahamn\fP, \fI\%jarpy\fP, \fI\%jasonkeene\fP, \fI\%jayeshka\fP, \fI\%jfindlay\fP, \fI\%jleroy\fP, \fI\%jmdcal\fP, \fI\%jodv\fP, \fI\%joejulian\fP, \fI\%jquast\fP, \fI\%justinta\fP, \fI\%kev009\fP, \fI\%klyr\fP, \fI\%l2ol33rt\fP, \fI\%loa\fP, \fI\%lomeroe\fP, \fI\%martinhoefling\fP, \fI\%mgwilliams\fP, \fI\%nicholascapo\fP, \fI\%niq000\fP, \fI\%nmadhok\fP, \fI\%nyushi\fP, \fI\%oeuftete\fP, \fI\%opdude\fP, \fI\%pcdummy\fP, \fI\%pcn\fP, \fI\%peterdemin\fP, \fI\%puneetk\fP, \fI\%rallytime\fP, \fI\%rmatulat\fP, \fI\%s0undt3ch\fP, \fI\%silenius\fP, \fI\%sjorge\fP, \fI\%stanislavb\fP, \fI\%steverweber\fP, \fI\%supertom\fP, \fI\%t0rrant\fP, \fI\%tankywoo\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%tony\-cocco\fP, \fI\%twangboy\fP, \fI\%uvsmtid\fP, \fI\%vr\-jack\fP, \fI\%yanatan16\fP, \fI\%zyio\fP) +Contributors: \fB92\fP (\fI\%0xf10e\fP, \fI\%AkhterAli\fP, \fI\%BretFisher\fP, \fI\%DmitryKuzmenko\fP, \fI\%EvaSDK\fP, +\fI\%GideonRed\-zz\fP, \fI\%JohannesEbke\fP, \fI\%Oro\fP, \fI\%TheBigBear\fP, \fI\%TronPaul\fP, \fI\%UtahDave\fP, \fI\%ahus1\fP, +\fI\%alekti\fP, \fI\%alexandrsushko\fP, \fI\%amontalban\fP, \fI\%andre\-luiz\-dos\-santos\fP, \fI\%aneeshusa\fP, \fI\%anlutro\fP, +\fI\%asyncsrc\fP, \fI\%attiasr\fP, \fI\%babilen\fP, \fI\%basepi\fP, \fI\%bbinet\fP, \fI\%bclermont\fP, \fI\%bechtoldt\fP, +\fI\%blackduckx\fP, \fI\%bobrik\fP, \fI\%cachedout\fP, \fI\%colekowalski\fP, \fI\%cro\fP, \fI\%d\-\-j\fP, \fI\%davidjb\fP, \fI\%denmat\fP, +\fI\%derBroBro\fP, \fI\%dkiser\fP, \fI\%driskell\fP, \fI\%egarbi\fP, \fI\%fleaflicker\fP, \fI\%garethgreenaway\fP, +\fI\%gmcwhistler\fP, \fI\%gtmanfred\fP, \fI\%hasues\fP, \fI\%isbm\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jahamn\fP, +\fI\%jarpy\fP, \fI\%jasonkeene\fP, \fI\%jayeshka\fP, \fI\%jfindlay\fP, \fI\%jleroy\fP, \fI\%jmdcal\fP, \fI\%jodv\fP, \fI\%joejulian\fP, +\fI\%jquast\fP, \fI\%justinta\fP, \fI\%kev009\fP, \fI\%klyr\fP, \fI\%l2ol33rt\fP, \fI\%loa\fP, \fI\%lomeroe\fP, \fI\%martinhoefling\fP, +\fI\%mgwilliams\fP, \fI\%nicholascapo\fP, \fI\%niq000\fP, \fI\%nmadhok\fP, \fI\%nyushi\fP, \fI\%oeuftete\fP, \fI\%opdude\fP, +\fI\%pcdummy\fP, \fI\%pcn\fP, \fI\%peterdemin\fP, \fI\%puneetk\fP, \fI\%rallytime\fP, \fI\%rmatulat\fP, \fI\%s0undt3ch\fP, +\fI\%silenius\fP, \fI\%sjorge\fP, \fI\%stanislavb\fP, \fI\%steverweber\fP, \fI\%supertom\fP, \fI\%t0rrant\fP, \fI\%tankywoo\fP, +\fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%tony\-cocco\fP, \fI\%twangboy\fP, \fI\%uvsmtid\fP, \fI\%vr\-jack\fP, +\fI\%yanatan16\fP, \fI\%zyio\fP) .UNINDENT .SS Bug Fixes .INDENT 0.0 @@ -571952,13 +574041,13 @@ a1274c438d I might have fixed some tests... I might have made them worse a1f90fa070 Only call convert_to_arn when action name is provided .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#26288\fP: (\fI\%bbinet\fP) allow to delete grains which value is False +\fBPR\fP \fI\%#26288\fP: (\fI\%bbinet\fP) allow deleting grains which value is False @ \fI2015\-08\-13 18:24:36 UTC\fP .INDENT 2.0 .IP \(bu 2 c81dc0b62f Merge pull request \fI\%#26288\fP from bbinet/grains\-absent\-fix .IP \(bu 2 -f46722aaeb allow to delete grains which value is False +f46722aaeb allow deleting grains which value is False .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#24882\fP: (\fI\%nmadhok\fP) salt.states.openstack_config.present and salt.states.openstack_config.absent make changes when test=True (refs: \fI\%#26263\fP) @@ -572280,7 +574369,7 @@ f421a936dc Fix slack docs .IP \(bu 2 08eaca4fe4 lint fixes. .IP \(bu 2 -7046b84ac8 Fixing a bug where cp.get_file_str would not work if using http(s) URLs with authentication. The salt.utils.http library in 2015.5 defaults to using urllib instead of requests and there was no authenitication support added. This PR adds authentication support. \fI\%#24106\fP +7046b84ac8 Fixing a bug where cp.get_file_str would not work if using http(s) URLs with authentication. The salt.utils.http library in 2015.5 defaults to using urllib instead of requests and there was no authentication support added. This PR adds authentication support. \fI\%#24106\fP .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#26141\fP: (\fI\%nmadhok\fP) salt\-cloud VMware driver fails with error in parsing configuration file (refs: \fI\%#26140\fP) @@ -572964,7 +575053,7 @@ af2326af68 Merge pull request \fI\%#25885\fP from t0rrant/patch\-3 .IP \(bu 2 d7f448d501 Needed popen.wait(). .IP \(bu 2 -25f8042e41 Checking for scp existance. Using command \-v should be POSIX +25f8042e41 Checking for scp existence. Using command \-v should be POSIX .IP \(bu 2 6b2100a30b New exitcode for SCP not found Re: \fI\%https://github.com/saltstack/salt/issues/25478\fP and \fI\%https://github.com/saltstack/salt/issues/25026\fP .UNINDENT @@ -573076,7 +575165,7 @@ eac19fbf33 Allows cp.push to recreate empty files 067ea788e9 Add salt:// to key_url options to docs for pkgrepo.managed .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#22699\fP: (\fI\%arthurlogilab\fP) salt\-cloud fails on KeyError when given a nonexistant action (refs: \fI\%#25807\fP) +\fBISSUE\fP \fI\%#22699\fP: (\fI\%arthurlogilab\fP) salt\-cloud fails on KeyError when given a nonexistent action (refs: \fI\%#25807\fP) .IP \(bu 2 \fBPR\fP \fI\%#25807\fP: (\fI\%rallytime\fP) Provide helpful error when using actions with a mapfile @ \fI2015\-07\-29 15:30:15 UTC\fP @@ -573621,7 +575710,7 @@ af82835f42 Move patching of mock_open to within test .IP \(bu 2 8a1765fc6f Add version_cmp function to yumpkg.py .IP \(bu 2 -457e72e273 Fix refernces to __salt__[\(aqversion_cmp\(aq] +457e72e273 Fix references to __salt__[\(aqversion_cmp\(aq] .IP \(bu 2 a19fa2296a Avoid using single\-letter variable .UNINDENT @@ -574190,11 +576279,11 @@ a086e5ad35 Adding entropy note @ \fI2015\-07\-14 03:25:13 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#25256\fP: (\fI\%yanatan16\fP) Dont assume source_hash exists (refs: \fI\%#25392\fP) +\fBPR\fP \fI\%#25256\fP: (\fI\%yanatan16\fP) Don\(aqt assume source_hash exists (refs: \fI\%#25392\fP) .IP \(bu 2 008e3295c6 Merge pull request \fI\%#25392\fP from rallytime/bp\-25256 .IP \(bu 2 -6b2da4d582 Dont assume source_hash exists +6b2da4d582 Don\(aqt assume source_hash exists .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#25398\fP: (\fI\%twangboy\fP) Fix date @@ -574321,7 +576410,7 @@ f473918a53 Don\(aqt try to read init binary if it wasn\(aqt found e13a9fd74e Fix documentation for file.blockreplace .UNINDENT .IP \(bu 2 -\fBISSUE\fP \fI\%#19288\fP: (\fI\%oba11\fP) AssociatePublicIpAddress doesnt work with salt\-cloud 2014.7.0 (refs: \fI\%#25326\fP, \fI\%#20972\fP) +\fBISSUE\fP \fI\%#19288\fP: (\fI\%oba11\fP) AssociatePublicIpAddress doesn\(aqt work with salt\-cloud 2014.7.0 (refs: \fI\%#25326\fP, \fI\%#20972\fP) .IP \(bu 2 \fBPR\fP \fI\%#25326\fP: (\fI\%rallytime\fP) Back\-port \fI\%#20972\fP to 2015.5 @ \fI2015\-07\-10 18:49:44 UTC\fP @@ -574846,7 +576935,10 @@ Total Issue References: \fB28\fP .IP \(bu 2 Total PR References: \fB39\fP .IP \(bu 2 -Contributors: \fB20\fP (\fI\%TheBigBear\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%bastiaanb\fP, \fI\%cachedout\fP, \fI\%driskell\fP, \fI\%garethgreenaway\fP, \fI\%jacobhammons\fP, \fI\%jahamn\fP, \fI\%jfindlay\fP, \fI\%rallytime\fP, \fI\%s0undt3ch\fP, \fI\%scottjpack\fP, \fI\%silenius\fP, \fI\%sixninetynine\fP, \fI\%stanislavb\fP, \fI\%terminalmage\fP, \fI\%thusoy\fP, \fI\%twangboy\fP, \fI\%vr\-jack\fP) +Contributors: \fB20\fP (\fI\%TheBigBear\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%bastiaanb\fP, \fI\%cachedout\fP, +\fI\%driskell\fP, \fI\%garethgreenaway\fP, \fI\%jacobhammons\fP, \fI\%jahamn\fP, \fI\%jfindlay\fP, \fI\%rallytime\fP, +\fI\%s0undt3ch\fP, \fI\%scottjpack\fP, \fI\%silenius\fP, \fI\%sixninetynine\fP, \fI\%stanislavb\fP, \fI\%terminalmage\fP, +\fI\%thusoy\fP, \fI\%twangboy\fP, \fI\%vr\-jack\fP) .UNINDENT .SS Changelog for v2015.5.4..v2015.5.5 .sp @@ -574935,13 +577027,13 @@ edc04930ae Merge pull request \fI\%#26496\fP from jfindlay/dateutil cbe330e78b add dateutil dependency reporting .UNINDENT .IP \(bu 2 -\fBPR\fP \fI\%#26494\fP: (\fI\%cachedout\fP) Remove unecessary debug statements +\fBPR\fP \fI\%#26494\fP: (\fI\%cachedout\fP) Remove unnecessary debug statements @ \fI2015\-08\-19 20:46:00 UTC\fP .INDENT 2.0 .IP \(bu 2 4fff53b842 Merge pull request \fI\%#26494\fP from cachedout/remove_debug_statements .IP \(bu 2 -d717a43dcc Remove unecessary debug statements +d717a43dcc Remove unnecessary debug statements .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#26465\fP: (\fI\%rallytime\fP) Back\-port \fI\%#26457\fP to 2015.5 @@ -575101,7 +577193,7 @@ a5aa752a85 Override the develop command when WITH_SETUPTOOLS is set .IP \(bu 2 87151736c5 Merge pull request \fI\%#26371\fP from bastiaanb/fix/issue\-26161\-salt\-initscripts\-dont\-set\-lockfile .IP \(bu 2 -ec8d4b0470 test wether RETVAL is 0 with \-eq rather than =. +ec8d4b0470 test whether RETVAL is 0 with \-eq rather than =. .IP \(bu 2 a83a5de41e fix issue \fI\%#26161\fP: on RedHat family systems touch /var/lock/subsys/$SERVICE to ensure the daemon will be stopped on shutdown. .UNINDENT @@ -575275,7 +577367,14 @@ Total Issue References: \fB71\fP .IP \(bu 2 Total PR References: \fB178\fP .IP \(bu 2 -Contributors: \fB53\fP (\fI\%Arabus\fP, \fI\%JensRantil\fP, \fI\%PierreR\fP, \fI\%SaltyCharles\fP, \fI\%TheBigBear\fP, \fI\%abh\fP, \fI\%aboe76\fP, \fI\%anlutro\fP, \fI\%arthurlogilab\fP, \fI\%aspyatkin\fP, \fI\%basepi\fP, \fI\%benhosmer\fP, \fI\%bersace\fP, \fI\%cachedout\fP, \fI\%carlpett\fP, \fI\%damonzheng\fP, \fI\%derphilipp\fP, \fI\%dmyerscough\fP, \fI\%dsumsky\fP, \fI\%efficks\fP, \fI\%eguven\fP, \fI\%garethgreenaway\fP, \fI\%hexedpackets\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%joejulian\fP, \fI\%johanek\fP, \fI\%julianbrost\fP, \fI\%kev009\fP, \fI\%lorengordon\fP, \fI\%madprog\fP, \fI\%marccardinal\fP, \fI\%netroby\fP, \fI\%nmadhok\fP, \fI\%plastikos\fP, \fI\%rallytime\fP, \fI\%serge\-p\fP, \fI\%spudfkc\fP, \fI\%stanislavb\fP, \fI\%styro\fP, \fI\%systembell\fP, \fI\%tankywoo\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%tjstansell\fP, \fI\%twangboy\fP, \fI\%vakulich\fP, \fI\%vtek21\fP, \fI\%whiteinge\fP, \fI\%zmalone\fP, \fI\%zyio\fP) +Contributors: \fB53\fP (\fI\%Arabus\fP, \fI\%JensRantil\fP, \fI\%PierreR\fP, \fI\%SaltyCharles\fP, \fI\%TheBigBear\fP, +\fI\%abh\fP, \fI\%aboe76\fP, \fI\%anlutro\fP, \fI\%arthurlogilab\fP, \fI\%aspyatkin\fP, \fI\%basepi\fP, \fI\%benhosmer\fP, +\fI\%bersace\fP, \fI\%cachedout\fP, \fI\%carlpett\fP, \fI\%damonzheng\fP, \fI\%derphilipp\fP, \fI\%dmyerscough\fP, \fI\%dsumsky\fP, +\fI\%efficks\fP, \fI\%eguven\fP, \fI\%garethgreenaway\fP, \fI\%hexedpackets\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, +\fI\%jfindlay\fP, \fI\%joejulian\fP, \fI\%johanek\fP, \fI\%julianbrost\fP, \fI\%kev009\fP, \fI\%lorengordon\fP, \fI\%madprog\fP, +\fI\%marccardinal\fP, \fI\%netroby\fP, \fI\%nmadhok\fP, \fI\%plastikos\fP, \fI\%rallytime\fP, \fI\%serge\-p\fP, \fI\%spudfkc\fP, +\fI\%stanislavb\fP, \fI\%styro\fP, \fI\%systembell\fP, \fI\%tankywoo\fP, \fI\%techhat\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, +\fI\%tjstansell\fP, \fI\%twangboy\fP, \fI\%vakulich\fP, \fI\%vtek21\fP, \fI\%whiteinge\fP, \fI\%zmalone\fP, \fI\%zyio\fP) .UNINDENT .SS Security Fixes .sp @@ -575376,13 +577475,13 @@ adeb1dcad4 Pylint Fix .IP \(bu 2 \fBISSUE\fP \fI\%#27447\fP: (\fI\%junster1\fP) Fix mysql table size for salt_events (refs: \fI\%#27472\fP) .IP \(bu 2 -\fBPR\fP \fI\%#27472\fP: (\fI\%cachedout\fP) Change recommeded schema for data field in mysql event table +\fBPR\fP \fI\%#27472\fP: (\fI\%cachedout\fP) Change recommended schema for data field in mysql event table @ \fI2015\-09\-29 15:49:37 UTC\fP .INDENT 2.0 .IP \(bu 2 68d784c3dd Merge pull request \fI\%#27472\fP from cachedout/fix_27447 .IP \(bu 2 -5e745ad6da Change recommeded schema for data field in mysql event table +5e745ad6da Change recommended schema for data field in mysql event table .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#27468\fP: (\fI\%cachedout\fP) Fix 27351 @@ -575471,7 +577570,7 @@ a996ea46e2 Added quotes to version numbers example .IP \(bu 2 ed6207a438 Merge pull request \fI\%#27419\fP from rallytime/fix\-9856 .IP \(bu 2 -551396564a Ammend error log to include multiple tips for troubleshooting. +551396564a Amend error log to include multiple tips for troubleshooting. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#16753\fP: (\fI\%johtso\fP) Duplicate selector in top file gives unhelpful traceback (refs: \fI\%#27426\fP) @@ -575495,7 +577594,7 @@ f6cbd81e66 Don\(aqt stacktrace if there are conflicting id errors in highstate .IP \(bu 2 39a4ae5a6c Remove hdd: 19 refs from SL docs \- no longer available from SoftLayer. .IP \(bu 2 -de2f9234d3 Use correct default for bandwith +de2f9234d3 Use correct default for bandwidth .IP \(bu 2 42d8127f79 Don\(aqt set the optional_products default to a boolean, and then try to loop. .IP \(bu 2 @@ -577012,7 +579111,14 @@ Total Issue References: \fB66\fP .IP \(bu 2 Total PR References: \fB135\fP .IP \(bu 2 -Contributors: \fB46\fP (\fI\%0xf10e\fP, \fI\%JaseFace\fP, \fI\%MasterNayru\fP, \fI\%MrCitron\fP, \fI\%Sacro\fP, \fI\%ajacoutot\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%belvedere\-trading\fP, \fI\%beverlcl\fP, \fI\%blast\-hardcheese\fP, \fI\%blueyed\fP, \fI\%bogdanr\fP, \fI\%cachedout\fP, \fI\%cbuechler\fP, \fI\%chrigl\fP, \fI\%dmyerscough\fP, \fI\%eguven\fP, \fI\%eliasp\fP, \fI\%erchn\fP, \fI\%eyj\fP, \fI\%garethgreenaway\fP, \fI\%gashev\fP, \fI\%gnubyexample\fP, \fI\%gracinet\fP, \fI\%gravyboat\fP, \fI\%gwaters\fP, \fI\%hedinfaok\fP, \fI\%iggy\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%lorengordon\fP, \fI\%mbologna\fP, \fI\%msciciel\fP, \fI\%nmadhok\fP, \fI\%pass\-by\-value\fP, \fI\%plastikos\fP, \fI\%rallytime\fP, \fI\%rominf\fP, \fI\%s0undt3ch\fP, \fI\%silenius\fP, \fI\%sjmh\fP, \fI\%stephen144\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP) +Contributors: \fB46\fP (\fI\%0xf10e\fP, \fI\%JaseFace\fP, \fI\%MasterNayru\fP, \fI\%MrCitron\fP, \fI\%Sacro\fP, +\fI\%ajacoutot\fP, \fI\%arthurlogilab\fP, \fI\%basepi\fP, \fI\%belvedere\-trading\fP, \fI\%beverlcl\fP, +\fI\%blast\-hardcheese\fP, \fI\%blueyed\fP, \fI\%bogdanr\fP, \fI\%cachedout\fP, \fI\%cbuechler\fP, \fI\%chrigl\fP, +\fI\%dmyerscough\fP, \fI\%eguven\fP, \fI\%eliasp\fP, \fI\%erchn\fP, \fI\%eyj\fP, \fI\%garethgreenaway\fP, \fI\%gashev\fP, +\fI\%gnubyexample\fP, \fI\%gracinet\fP, \fI\%gravyboat\fP, \fI\%gwaters\fP, \fI\%hedinfaok\fP, \fI\%iggy\fP, \fI\%jacksontj\fP, +\fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%lorengordon\fP, \fI\%mbologna\fP, \fI\%msciciel\fP, \fI\%nmadhok\fP, +\fI\%pass\-by\-value\fP, \fI\%plastikos\fP, \fI\%rallytime\fP, \fI\%rominf\fP, \fI\%s0undt3ch\fP, \fI\%silenius\fP, \fI\%sjmh\fP, +\fI\%stephen144\fP, \fI\%terminalmage\fP, \fI\%twangboy\fP) .UNINDENT .sp \fBIMPORTANT:\fP @@ -577609,7 +579715,7 @@ f96d39483d updated the tutorial with gravyboat\(aqs suggestions .IP \(bu 2 b1f4a2bdf4 i think i changed the wrong header, updated to fix .IP \(bu 2 -846b3aece1 I found you can not run the cp.push commands until after enabling the feature in the conf, so I wanted to update the docs so others who try these commands wont bump into the same issue I had. +846b3aece1 I found you can not run the cp.push commands until after enabling the feature in the conf, so I wanted to update the docs so others who try these commands won\(aqt bump into the same issue I had. .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#28248\fP: (\fI\%0xf10e\fP) conventions/formula.rst: "Gather external data" suggests unavailable jinja functionality (refs: \fI\%#28280\fP) @@ -578173,7 +580279,7 @@ fd485e2396 returners.local_cache: fix endless loop on OSError .IP \(bu 2 579f2646ba .. versionadded:: 2015.5.6 .IP \(bu 2 -cbaf46e066 python <2.7 compability (pylint issue) +cbaf46e066 python <2.7 compatibility (pylint issue) .IP \(bu 2 ecde499478 s/bin/b to avoid confusion with bin() .IP \(bu 2 @@ -578266,7 +580372,8 @@ Total Issue References: \fB12\fP .IP \(bu 2 Total PR References: \fB27\fP .IP \(bu 2 -Contributors: \fB12\fP (\fI\%MasterNayru\fP, \fI\%TronPaul\fP, \fI\%basepi\fP, \fI\%cachedout\fP, \fI\%cxmcc\fP, \fI\%jfindlay\fP, \fI\%kevinlondon\fP, \fI\%messa\fP, \fI\%rallytime\fP, \fI\%tehmaspc\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) +Contributors: \fB12\fP (\fI\%MasterNayru\fP, \fI\%TronPaul\fP, \fI\%basepi\fP, \fI\%cachedout\fP, \fI\%cxmcc\fP, +\fI\%jfindlay\fP, \fI\%kevinlondon\fP, \fI\%messa\fP, \fI\%rallytime\fP, \fI\%tehmaspc\fP, \fI\%twangboy\fP, \fI\%whiteinge\fP) .UNINDENT .SS Security Fix .sp @@ -578501,7 +580608,10 @@ Total Issue References: \fB21\fP .IP \(bu 2 Total PR References: \fB48\fP .IP \(bu 2 -Contributors: \fB21\fP (\fI\%abednarik\fP, \fI\%aletourneau\fP, \fI\%attiasr\fP, \fI\%basepi\fP, \fI\%cachedout\fP, \fI\%clan\fP, \fI\%clarkperkins\fP, \fI\%cro\fP, \fI\%dmyerscough\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%jsutton\fP, \fI\%justinta\fP, \fI\%lorengordon\fP, \fI\%markckimball\fP, \fI\%mpreziuso\fP, \fI\%rallytime\fP, \fI\%terminalmage\fP, \fI\%titilambert\fP, \fI\%twangboy\fP, \fI\%zmalone\fP) +Contributors: \fB21\fP (\fI\%abednarik\fP, \fI\%aletourneau\fP, \fI\%attiasr\fP, \fI\%basepi\fP, \fI\%cachedout\fP, \fI\%clan\fP, +\fI\%clarkperkins\fP, \fI\%cro\fP, \fI\%dmyerscough\fP, \fI\%jacobhammons\fP, \fI\%jfindlay\fP, \fI\%jsutton\fP, \fI\%justinta\fP, +\fI\%lorengordon\fP, \fI\%markckimball\fP, \fI\%mpreziuso\fP, \fI\%rallytime\fP, \fI\%terminalmage\fP, \fI\%titilambert\fP, +\fI\%twangboy\fP, \fI\%zmalone\fP) .UNINDENT .SS Changelog for v2015.5.8..v2015.5.9 .sp @@ -578563,7 +580673,7 @@ c3390955b0 Updated doc site banners @ \fI2016\-01\-04 19:30:50 UTC\fP .INDENT 2.0 .IP \(bu 2 -1a5d585d91 Merge pull request \fI\%#30127\fP from jsutton/clarify\-documenation\-for\-random_master +1a5d585d91 Merge pull request \fI\%#30127\fP from jsutton/clarify\-documentation\-for\-random_master .IP \(bu 2 01dbf385ef Adding random_master to reference and updating master_shuffle. Adding master_shuffle to the minion example config file as it is needed for multi\-master PKI. .UNINDENT @@ -579972,7 +582082,14 @@ Total Issue References: \fB66\fP .IP \(bu 2 Total PR References: \fB166\fP .IP \(bu 2 -Contributors: \fB49\fP (\fI\%0xf10e\fP, \fI\%Azidburn\fP, \fI\%F30\fP, \fI\%JaseFace\fP, \fI\%JohannesEbke\fP, \fI\%aletourneau\fP, \fI\%aneeshusa\fP, \fI\%basepi\fP, \fI\%bastichelaar\fP, \fI\%bersace\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, \fI\%cellscape\fP, \fI\%chris\-prince\fP, \fI\%clan\fP, \fI\%clinta\fP, \fI\%cr1st1p\fP, \fI\%cro\fP, \fI\%dr4Ke\fP, \fI\%ericfode\fP, \fI\%ether42\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%hvnsweeting\fP, \fI\%jfindlay\fP, \fI\%jleroy\fP, \fI\%joejulian\fP, \fI\%justinta\fP, \fI\%kaithar\fP, \fI\%lorengordon\fP, \fI\%martinhoefling\fP, \fI\%mguegan\fP, \fI\%multani\fP, \fI\%notpeter\fP, \fI\%panticz\fP, \fI\%rallytime\fP, \fI\%rominf\fP, \fI\%rubic\fP, \fI\%s0undt3ch\fP, \fI\%skizunov\fP, \fI\%slinu3d\fP, \fI\%t0rrant\fP, \fI\%techhat\fP, \fI\%teizz\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%twangboy\fP, \fI\%vdesjardins\fP, \fI\%vr\-jack\fP) +Contributors: \fB49\fP (\fI\%0xf10e\fP, \fI\%Azidburn\fP, \fI\%F30\fP, \fI\%JaseFace\fP, \fI\%JohannesEbke\fP, +\fI\%aletourneau\fP, \fI\%aneeshusa\fP, \fI\%basepi\fP, \fI\%bastichelaar\fP, \fI\%bersace\fP, \fI\%cachedout\fP, \fI\%cedwards\fP, +\fI\%cellscape\fP, \fI\%chris\-prince\fP, \fI\%clan\fP, \fI\%clinta\fP, \fI\%cr1st1p\fP, \fI\%cro\fP, \fI\%dr4Ke\fP, \fI\%ericfode\fP, +\fI\%ether42\fP, \fI\%garethgreenaway\fP, \fI\%gtmanfred\fP, \fI\%hvnsweeting\fP, \fI\%jfindlay\fP, \fI\%jleroy\fP, +\fI\%joejulian\fP, \fI\%justinta\fP, \fI\%kaithar\fP, \fI\%lorengordon\fP, \fI\%martinhoefling\fP, \fI\%mguegan\fP, \fI\%multani\fP, +\fI\%notpeter\fP, \fI\%panticz\fP, \fI\%rallytime\fP, \fI\%rominf\fP, \fI\%rubic\fP, \fI\%s0undt3ch\fP, \fI\%skizunov\fP, +\fI\%slinu3d\fP, \fI\%t0rrant\fP, \fI\%techhat\fP, \fI\%teizz\fP, \fI\%terminalmage\fP, \fI\%thatch45\fP, \fI\%twangboy\fP, +\fI\%vdesjardins\fP, \fI\%vr\-jack\fP) .UNINDENT .SS Security Fix .sp @@ -580054,7 +582171,7 @@ fb24f0cf02 Report failure when failed to create/clone LXC container .IP \(bu 2 2d9aa2bb97 Avoid shadowing variables in lxc module .IP \(bu 2 -792e1021f2 Allow to override profile options in lxc.cloud_init_interface +792e1021f2 Allow overriding profile options in lxc.cloud_init_interface .IP \(bu 2 42bd64b9b3 Return changes on successful lxc.create from salt\-cloud .IP \(bu 2 @@ -580326,9 +582443,9 @@ d0549e56ba salt\-ssh state: fix including all salt:// references @ \fI2015\-05\-11 21:54:25 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#23474\fP: (\fI\%dr4Ke\fP) Fix grains.append in nested dictionnary grains \fI\%#23411\fP (refs: \fI\%#23551\fP) +\fBPR\fP \fI\%#23474\fP: (\fI\%dr4Ke\fP) Fix grains.append in nested dictionary grains \fI\%#23411\fP (refs: \fI\%#23551\fP) .IP \(bu 2 -\fBPR\fP \fI\%#23440\fP: (\fI\%dr4Ke\fP) fix grains.append in nested dictionnary grains \fI\%#23411\fP (refs: \fI\%#23474\fP) +\fBPR\fP \fI\%#23440\fP: (\fI\%dr4Ke\fP) fix grains.append in nested dictionary grains \fI\%#23411\fP (refs: \fI\%#23474\fP) .IP \(bu 2 6ec87ce9f5 Merge pull request \fI\%#23551\fP from dr4Ke/grains.append_unit_tests .IP \(bu 2 @@ -580343,19 +582460,19 @@ c838a22377 unit tests for grains.append module function .IP \(bu 2 \fBISSUE\fP \fI\%#23411\fP: (\fI\%dr4Ke\fP) grains.append should work at any level of a grain (refs: \fI\%#23440\fP, \fI\%#23474\fP) .IP \(bu 2 -\fBPR\fP \fI\%#23474\fP: (\fI\%dr4Ke\fP) Fix grains.append in nested dictionnary grains \fI\%#23411\fP (refs: \fI\%#23551\fP) +\fBPR\fP \fI\%#23474\fP: (\fI\%dr4Ke\fP) Fix grains.append in nested dictionary grains \fI\%#23411\fP (refs: \fI\%#23551\fP) @ \fI2015\-05\-11 18:00:21 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#23440\fP: (\fI\%dr4Ke\fP) fix grains.append in nested dictionnary grains \fI\%#23411\fP (refs: \fI\%#23474\fP) +\fBPR\fP \fI\%#23440\fP: (\fI\%dr4Ke\fP) fix grains.append in nested dictionary grains \fI\%#23411\fP (refs: \fI\%#23474\fP) .IP \(bu 2 e96c5c5bf3 Merge pull request \fI\%#23474\fP from dr4Ke/fix_grains.append_nested .IP \(bu 2 -a01a5bb51e grains.get, parameter delimititer, versionadded: 2014.7.6 +a01a5bb51e grains.get, parameter delimiter, versionadded: 2014.7.6 .IP \(bu 2 b39f50475d remove debugging output .IP \(bu 2 -b6e15e295c fix grains.append in nested dictionnary grains \fI\%#23411\fP +b6e15e295c fix grains.append in nested dictionary grains \fI\%#23411\fP .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#23537\fP: (\fI\%t0rrant\fP) Update changelog @@ -580609,13 +582726,13 @@ b751a7281c Inject local minion config into shim if available .IP \(bu 2 \fBISSUE\fP \fI\%#22742\fP: (\fI\%hvnsweeting\fP) salt\-master says: "This master address: \(aqsalt\(aq was previously resolvable but now fails to resolve!" (refs: \fI\%#23344\fP) .IP \(bu 2 -\fBPR\fP \fI\%#23344\fP: (\fI\%cachedout\fP) Explicitely set file_client on master +\fBPR\fP \fI\%#23344\fP: (\fI\%cachedout\fP) Explicitly set file_client on master @ \fI2015\-05\-04 23:21:48 UTC\fP .INDENT 2.0 .IP \(bu 2 02658b1e60 Merge pull request \fI\%#23344\fP from cachedout/issue_22742 .IP \(bu 2 -5adc96ce7f Explicitely set file_client on master +5adc96ce7f Explicitly set file_client on master .UNINDENT .IP \(bu 2 \fBPR\fP \fI\%#23318\fP: (\fI\%cellscape\fP) Honor seed argument in LXC container initializaton @@ -580970,7 +583087,7 @@ fa889845df Change s3 to s3fs in fileserver_roots docs example @ \fI2015\-04\-28 03:27:29 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#22895\fP: (\fI\%aletourneau\fP) pam_tally counter was not reset to 0 after a succesfull login (refs: \fI\%#23113\fP, \fI\%#22925\fP, #saltstack/salt\(ga#22925\(ga_) +\fBPR\fP \fI\%#22895\fP: (\fI\%aletourneau\fP) pam_tally counter was not reset to 0 after a successful login (refs: \fI\%#23113\fP, \fI\%#22925\fP, #saltstack/salt\(ga#22925\(ga_) .IP \(bu 2 dfe2066b25 Merge pull request \fI\%#23113\fP from saltstack/revert\-22925\-bp\-22895 .IP \(bu 2 @@ -581192,7 +583309,7 @@ b13db32fde add test for \fI\%#18843\fP @ \fI2015\-04\-22 02:30:26 UTC\fP .INDENT 2.0 .IP \(bu 2 -\fBPR\fP \fI\%#22895\fP: (\fI\%aletourneau\fP) pam_tally counter was not reset to 0 after a succesfull login (refs: \fI\%#23113\fP, \fI\%#22925\fP, #saltstack/salt\(ga#22925\(ga_) +\fBPR\fP \fI\%#22895\fP: (\fI\%aletourneau\fP) pam_tally counter was not reset to 0 after a successful login (refs: \fI\%#23113\fP, \fI\%#22925\fP, #saltstack/salt\(ga#22925\(ga_) .IP \(bu 2 6890752dd3 Merge pull request \fI\%#22925\fP from rallytime/bp\-22895 .IP \(bu 2 @@ -581202,7 +583319,7 @@ b13db32fde add test for \fI\%#18843\fP .IP \(bu 2 5ebf159554 Cleaned up pull request .IP \(bu 2 -a08ac478f6 pam_tally counter was not reset to 0 after a succesfull login +a08ac478f6 pam_tally counter was not reset to 0 after a successful login .UNINDENT .IP \(bu 2 \fBISSUE\fP \fI\%#22790\fP: (\fI\%whiteinge\fP) jobs.list_jobs runner tracebacks on \(aqmissing\(aq argument (refs: \fI\%#22914\fP) @@ -581493,7 +583610,11 @@ Total Issue References: \fB20\fP .IP \(bu 2 Total PR References: \fB60\fP .IP \(bu 2 -Contributors: \fB28\fP (\fI\%AkhterAli\fP, \fI\%BretFisher\fP, \fI\%MrCitron\fP, \fI\%alekti\fP, \fI\%basepi\fP, \fI\%bersace\fP, \fI\%cachedout\fP, \fI\%corux\fP, \fI\%cro\fP, \fI\%davidjb\fP, \fI\%dumol\fP, \fI\%efficks\fP, \fI\%garethgreenaway\fP, \fI\%hvnsweeting\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jaybocc2\fP, \fI\%jfindlay\fP, \fI\%jquast\fP, \fI\%justinta\fP, \fI\%msteed\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%puneetk\fP, \fI\%rallytime\fP, \fI\%techhat\fP, \fI\%trevor\-h\fP, \fI\%twangboy\fP) +Contributors: \fB28\fP (\fI\%AkhterAli\fP, \fI\%BretFisher\fP, \fI\%MrCitron\fP, \fI\%alekti\fP, \fI\%basepi\fP, \fI\%bersace\fP, +\fI\%cachedout\fP, \fI\%corux\fP, \fI\%cro\fP, \fI\%davidjb\fP, \fI\%dumol\fP, \fI\%efficks\fP, \fI\%garethgreenaway\fP, +\fI\%hvnsweeting\fP, \fI\%jacksontj\fP, \fI\%jacobhammons\fP, \fI\%jaybocc2\fP, \fI\%jfindlay\fP, \fI\%jquast\fP, \fI\%justinta\fP, +\fI\%msteed\fP, \fI\%nmadhok\fP, \fI\%notpeter\fP, \fI\%puneetk\fP, \fI\%rallytime\fP, \fI\%techhat\fP, \fI\%trevor\-h\fP, +\fI\%twangboy\fP) .UNINDENT .SS Changelog for v2014.7.6..v2014.7.7 .sp @@ -588262,346 +590383,548 @@ runners and commands like salt\-key. Tests have been added to test the aspects of the client APIs and ensure that the client calls work, and that they manage passed data, in a desirable way. .SS Upcoming Release -.SS Salt 3004 Release Notes \- Codename Silicon -.SS New Features -.SS Transactional System Support (MicroOS) -.sp -A transactional system, like \fBMicroOS\fP, can present some challenges -when the user decided to manage it via Salt. -.sp -MicroOS provide a read\-only rootfs and a tool, -\fBtransactional\-update\fP, that takes care of the management of the -system (updating, upgrading, installation or reboot, among others) in -an atomic way. -.sp -Atomicity is the main feature of MicroOS, and to guarantee this -property, this model leverages \fBsnapper\fP, \fBzypper\fP, \fBbtrfs\fP and -\fBoverlayfs\fP to create snapshots that will be updated independently -of the currently running system, and that are activated after the -reboot. This implies, for example, that some changes made on the -system are not visible until the next reboot, as those changes are -living in a different snapshot of the file system. +.SS Salt 3005 release notes \- Codename Phosphorus +.sp +Salt 3005 is currently under development. +.SS Python 3.5 and 3.6 Deprecation +.sp +This will be the last release we will support Python versions 3.5 and 3.6. +In Salt release 3006, we will only support Python versions 3.7 and higher. +Going forward, our policy will be to align with Python\(aqs supported versions. +.SS OS Support End of Life +.sp +Debian and Raspbian 9 are now EOL, therefore we will no longer be building +packages for these platforms. +.SS New packages available +.sp +With the release of Salt 3005, we are pleased to announce the +new packages using Tiamat and pyinstaller are now out of beta +and ready for production. These new packages are self\-contained +binaries of Salt, which includes the version of Python needed by Salt +and the required dependencies of Salt. The Tiamat packages allow users +to use Salt without Python being installed on the box. +.sp +Any new OS platforms we support going forward from version 3005 will only +include Tiamat packages. For this release, this includes Redhat 9 and Ubuntu 22.04. +.sp +On the day of the Phosphorus release, the instructions on how to install the +new Tiamat packages will be available on \fI\%https://repo.saltproject.io\fP for each +platform. If you want to test out the packages today you can install them +from \fI\%https://repo.saltproject.io/salt\-dev/py3/\fP using the correct directory +for your platform. If you find any issues with the packages, please open an +issue on this repo: \fI\%https://gitlab.com/saltstack/open/salt\-pkg\fP +.SS Non\-Tiamat packaging support +.sp +The non\-Tiamat packaging system previously used for Salt will also be provided +for platforms supported in previous Salt versions. The non\-Tiamat packaging will +only be avilable for two more releases. Please see the release\-3006 notes for more +details on the availablility of Non\-Tiamat packaging for the 3006 release. +The 3007 release and those going forward will only provide the Tiamat packages. +.SS Platform package support +.TS +center; +|l|l|l|. +_ +T{ +OS +T} T{ +New Tiamat Packages +T} T{ +Non\-Tiamat Packages +T} +_ +T{ +RHEL 7 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +RHEL 8 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +RHEL 9 +T} T{ +yes +T} T{ +no +T} +_ +T{ +Ubuntu 18.04 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Ubuntu 20.04 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Ubuntu 22.04 +T} T{ +yes +T} T{ +no +T} +_ +T{ +Debian 10 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Debian 11 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Raspbian 10 +T} T{ +no +T} T{ +yes +T} +_ +T{ +Raspbian 11 +T} T{ +no +T} T{ +yes +T} +_ +T{ +Fedora 35 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Fedora 36 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +MacOS +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Windows +T} T{ +yes +T} T{ +yes +T} +_ +.TE +.SS Repo paths +.TS +center; +|l|l|l|. +_ +T{ +OS +T} T{ +Tiamat Path +T} T{ +Non\-Tiamat Path +T} +_ +T{ +RHEL +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/redhat/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/redhat/\fP +T} +_ +T{ +Ubuntu +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/ubuntu/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/ubuntu/\fP +T} +_ +T{ +Debian +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/debian/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/debian/\fP +T} +_ +T{ +Raspbian +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/debian/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/debian/\fP +T} +_ +T{ +Fedora +T} T{ +Hosted on Fedora Repos +T} T{ +Hosted on Fedora Repos +T} +_ +T{ +MacOS +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/osx/\fP +T} T{ +\fI\%https://repo.saltproject.io/osx/\fP +T} +_ +T{ +Windows +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/windows/\fP +T} T{ +\fI\%https://repo.saltproject.io/windows/\fP +T} +_ +.TE .sp -Salt 3004 (Silicon) support this type of system via two new modules -(\fBtransactional_update\fP and \fBrebootmgr\fP) and a new executor -(\fBtransactional_update\fP). +Note that the Tiamat paths above will not be available until the day of the Phosphorus release. +.SS How do I migrate to the Tiamat packages? .sp -The new modules will provide all the low level API for interacting -with transactional systems, like defining a mantenance window where -the system is free to reboot and activate the new state, or install -new software in a new transaction. It will also provide hight level -of abstractions that will allows us to execute Salt module functions -or applying states inside new transactions. -.sp -The execution module will help us to treat the transactional system -transparently (like the traditional ones), using a mechanism that will -delegate some Salt modules execution into the new -\fBtransactional_update\fP module. -.SS Removed +The migration path from the non\-Tiamat packages to the Tiamat packages will include: .INDENT 0.0 .IP \(bu 2 -Removed the deprecated glance state and execution module in favor of the glance_image -state module and the glanceng execution module. (#59079) +Repo File: You need to update your repo file to point to the new repo paths for your platform. After the repo +file is updated, upgrade your Salt packages. .IP \(bu 2 -Removed support for Ubuntu 16.04 (#59869) +Pip packages: You need to ensure any 3rd party pip packages are installed in the correct Tiamat path. +This can be accomplished in two ways: +.INDENT 2.0 .IP \(bu 2 -Removed the deprecated support for \fBgid_from_name\fP from the \fBuser\fP state module (#60565) +\fBsalt pip install \fP .IP \(bu 2 -Removed deprecated virt.migrate_non_shared, virt.migrate_non_shared_inc, ssh from virt.migrate, and python2/python3 args from salt.utils.thin.gen_min and .gen_thin (#60893) +Using the \fBpip.installed\fP Salt state. .UNINDENT -.SS Deprecated +.UNINDENT +.sp +To install python packages into the system python environment, user\(aqs must now provide the \fBpip_bin\fP or \fBbin_env\fP to the pip state module. +.sp +For example: .INDENT 0.0 -.IP \(bu 2 -utils/boto3_elasticsearch is no longer needed (#59882) -.IP \(bu 2 -Changed "manufacture" grain to "manufacturer" for Solaris on SPARC to unify the name across all platforms. The old "manufacture" grain is now deprecated and will be removed in Sulfur (#60511) +.INDENT 3.5 +.sp +.nf +.ft C +lib\-foo: + pip.installed: + \- pip_bin: /usr/bin/pip3 +lib\-bar: + pip.installed: + \- bin_env: /usr/bin/python3 +.ft P +.fi .UNINDENT -.SS Changed +.UNINDENT +.SS Salt 3006 release notes \- Codename Sulfur +.sp +Salt 3006 is currently under development. +.SS Non\-Tiamat packaging support +.sp +The non\-Tiamat packaging system previously used for Salt will only be provided +for platforms that support Python 3.7 and above. If a platform is using +Python 3.5 or 3.6, only Tiamat packages will be available for that platform. +This policy change will require users to update their repo files to point to +the new repo path to use the new Tiamat packages. The full installation instructions +can be found at \fI\%https://repo.saltproject.io\fP\&. This change impacts various OS platforms, including: .INDENT 0.0 .IP \(bu 2 -Changed nginx.version to return version without \fBnginx/\fP prefix. (#57111) -.IP \(bu 2 -Updated Slack webhook returner to support event returns on salt\-master (#57182) -.IP \(bu 2 -Parsing Epoch out of version during pkg remove, since yum can\(aqt handle that in all of the cases. (#57881) +Ubuntu 18.04 .IP \(bu 2 -Add extra onfail req check in the state engine to allow onfail to be used with onchanges and other reqs in the same state (#59026) +CentOS 7 .IP \(bu 2 -Changed the default character set used by \fButils.pycrypto.secure_password()\fP to include symbols and implemented arguments to control the used character set. (#59486) +CentOS 8 .UNINDENT -.SS Fixed +.sp +These platforms will only have Tiamat packages avalable. +.sp +This is the last release we will provide non\-Tiamat packaging. The 3007 release and +those going forward will only provide the Tiamat packages. +.SS Dropping support for Python 3.5 and 3.6 +.sp +Python 3.5 and 3.6 will no longer be supported by Salt since they +are end of life. Going forward our policy will be to align with Python\(aqs +supported versions. +.SS Platform package support +.TS +center; +|l|l|l|. +_ +T{ +OS +T} T{ +New Tiamat Packages +T} T{ +Non\-Tiamat Packages +T} +_ +T{ +RHEL 7 +T} T{ +yes +T} T{ +no +T} +_ +T{ +RHEL 8 +T} T{ +yes +T} T{ +no +T} +_ +T{ +RHEL 9 +T} T{ +yes +T} T{ +no +T} +_ +T{ +Ubuntu 18.04 +T} T{ +yes +T} T{ +no +T} +_ +T{ +Ubuntu 20.04 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Ubuntu 22.04 +T} T{ +yes +T} T{ +no +T} +_ +T{ +Debian 10 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Debian 11 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Raspbian 10 +T} T{ +no +T} T{ +no +T} +_ +T{ +Raspbian 11 +T} T{ +no +T} T{ +yes +T} +_ +T{ +Fedora 35 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Fedora 36 +T} T{ +yes +T} T{ +yes +T} +_ +T{ +MacOS +T} T{ +yes +T} T{ +yes +T} +_ +T{ +Windows +T} T{ +yes +T} T{ +yes +T} +_ +.TE +.SS Repo paths +.TS +center; +|l|l|l|. +_ +T{ +OS +T} T{ +Tiamat Path +T} T{ +Non\-Tiamat Path +T} +_ +T{ +RHEL +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/redhat/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/redhat/\fP +T} +_ +T{ +Ubuntu +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/ubuntu/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/ubuntu/\fP +T} +_ +T{ +Debian +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/debian/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/debian/\fP +T} +_ +T{ +Raspbian +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/debian/\fP +T} T{ +\fI\%https://repo.saltproject.io/py3/debian/\fP +T} +_ +T{ +Fedora +T} T{ +Hosted on Fedora Repos +T} T{ +Hosted on Fedora Repos +T} +_ +T{ +MacOS +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/osx/\fP +T} T{ +\fI\%https://repo.saltproject.io/osx/\fP +T} +_ +T{ +Windows +T} T{ +\fI\%https://repo.saltproject.io/salt/py3/windows/\fP +T} T{ +\fI\%https://repo.saltproject.io/windows/\fP +T} +_ +.TE +.sp +Note that the Tiamat paths above will not be available until the day of the Phosphorus release. +.SS My OS only provides Tiamat packages. What do I do? +.sp +If you are using a platform that no longer provides the non\-Tiamat packages as shown +in the previous tables, you will need to update your repo files to point to the new Tiamat packages. +The new repo paths are provided in the previous tables, but the full instructions will be included +at \fI\%https://repo.saltproject.io\fP\&. +.SS My OS uses an unsupported version of Python. What do I do? +.sp +If your OS is using an unsupported version of Python, you will need to use the Tiamat packages. +.SS How do I migrate to the Tiamat packages? +.sp +The migration path from the non\-Tiamat packages to the Tiamat packages will include: .INDENT 0.0 .IP \(bu 2 -Surface strerror to user state instead of returning false (#20789) -.IP \(bu 2 -Fixing _get_envs() to preserve the order of pillar_roots. _get_envs() returned pillar_roots in a non\-deterministic order. (#24501) -.IP \(bu 2 -Fixes salt\-cloud \fBKeyError\fP that occurs when there exists any subnets with no tags when profiles use \fBsubnetname\fP (#44330) -.IP \(bu 2 -Fixes postgres_local_cache by removing duplicate unicode encoding. (#46942) -.IP \(bu 2 -Fixing the state aggregation system to properly handle requisities. -Fixing pkg state to exclude packages from aggregation if the hold attribute is in the state. (#47628) -.IP \(bu 2 -fix issue that allows case sensitive files to be carried through (#47969) -.IP \(bu 2 -Allow GCE Salt Cloud to use previously created IP Addresses. (#48947) -.IP \(bu 2 -Fixing rabbitmq.list_user_permissions to ensure we are returning a permission list with three elements even when some values are empty. (#49115) -.IP \(bu 2 -Periodically restart the fileserver update process to avoid leaks (#50313) -.IP \(bu 2 -Fix default value to dictionary for mine_function (#50695) -.IP \(bu 2 -Allow user.present to work on Alpine Linux by fixing linux_shadow.info (#50979) -.IP \(bu 2 -Ensure that zypper is called with only one \-\-no\-refresh parameter (#51382) -.IP \(bu 2 -Fixed fileclient cachedir path switching from master to minion due to incorrect MasterMinion configuration (#52288) -.IP \(bu 2 -Fixed the container detection inside virtual machines (#53868) -.IP \(bu 2 -Fix invalid dnf command when obsoletes=True in pkg.update function (#54224) -.IP \(bu 2 -Jinja renderer resolves wrong relative paths when importing subdirectories (#55159) -.IP \(bu 2 -Fixed bug #55262 where \fBsalt.modules.iptables\fP would call \fBcmd.run\fP and receive and interpret interspersed \fBstdout\fP and \fBstderr\fP output from subprocesses. (#55262) -.IP \(bu 2 -Updated pcs support to handle auth and setup for new syntax supporting version 0.10 (#56924) -.IP \(bu 2 -Reinstate ignore_cidr option in salt\-cloud openstack driver (#57127) -.IP \(bu 2 -Fix for network.wolmatch runner displaying \(aqinvalid arguments\(aq error with valid arguements (#57473) -.IP \(bu 2 -Fixed bug 57490, which prevented package installation for Open Euler and Issabel PBX. Both Open Euler and Issabel PBX use Yum for package management, added them to yumpkg.py. (#57490) -.IP \(bu 2 -Better handling of bad RSA public keys from minions (#57733) -.IP \(bu 2 -Fixing various functions in the file state module that use user.info to get group information, certain hosts particularly proxy minions do not have the user.info function avaiable. (#57786) -.IP \(bu 2 -Do not monkey patch yaml loaders: Prevent breaking Ansible filter modules (#57995) -.IP \(bu 2 -Fix \-\-subset command line option, and support old \(aqsub\(aq parameter name in cmd_subset for backwards compatibility (#58600) -.IP \(bu 2 -When calling salt.utils.http.query with a HEAD method to check for the existence of a source ensure that decode_body is False, so the file is not downloaded into memory when we don\(aqt need the contents. (#58881) -.IP \(bu 2 -Update the runas user on freebsd for postgres versions >9.5, since freebsd will be removing the package on 2021\-05\-13. (#58915) -.IP \(bu 2 -Fix pip module linked requirements file parsing (#58944) -.IP \(bu 2 -Fix incorrect hostname quoting in /etc/sysconfig/networking on Red Hat family OS. (#58956) -.IP \(bu 2 -Fix Xen DomU virt detection in grains for long running machines. (#59001) -.IP \(bu 2 -add encoding when windows encoding is not defaulting to utf8 (#59063) -.IP \(bu 2 -Fix "aptpkg.normalize_name" in case the arch is "all" for DEB packages (#59269) -.IP \(bu 2 -Astra Linux now considered a Debian family distro (#59332) -.IP \(bu 2 -Reworking the mysql module and state so that passwordless does not try to use unix_socket until unix_socket is set to True. (#59337) -.IP \(bu 2 -Fixed the zabbix module to read the connection data from pillar. (#59338) -.IP \(bu 2 -Fix crash on "yumpkg" execution module when unexpected output at listing patches (#59354) -.IP \(bu 2 -Remove return that had left over py2 code from win_path.py (#59396) -.IP \(bu 2 -Don\(aqt create spicevmc channel for Xen virtual machines (#59416) -.IP \(bu 2 -Fix win_servermanager.install so it will reboot when restart=True is passed (#59424) -.IP \(bu 2 -Clear the cached network interface grains during minion init and grains refresh (#59490) -.IP \(bu 2 -Normalized grain output for LXC containers (#59573) -.IP \(bu 2 -Fix typo in \(aqsalt/states/cmd.py\(aq to use "comment" instead of "commnd". (#59581) -.IP \(bu 2 -add aliyun linux support and set alinux as redhat family (#59686) -.IP \(bu 2 -Don\(aqt fail updating network without netmask ip attribute (#59692) -.IP \(bu 2 -Fixed using reserved keyword \(aqset\(aq as function argument in modules/ipset.py (#59714) -.IP \(bu 2 -Return empty changes when nothing has been done in virt.defined and virt.running states (#59739) -.IP \(bu 2 -Import salt.utils.azurearm instead of using __utils__ from loader in azure cloud. This fixes an issue where __utils__ would become unavailable when we are using the ThreadPool in azurearm. (#59744) -.IP \(bu 2 -Fix an issue with the LGPO module when the gpt.ini file contains unix style line -endings (/n). This was happening on a Windows Server 2019 instance created in -Google Cloud Platform (GCP). (#59769) -.IP \(bu 2 -The \fBansiblegate\fP module now correctly passes keyword arguments to Ansible module calls (#59792) -.IP \(bu 2 -Make sure cmdmod._log_cmd handles tuples properly (#59793) -.IP \(bu 2 -Updating the add, delete, modify, enable_job, and disable_job functions to return appropriate changes. (#59844) -.IP \(bu 2 -Apply pre\-commit changes to entire codebase. (#59847) -.IP \(bu 2 -Fix Hetzner cloud driver does not recognize machines when rolling out a map (#59864) -.IP \(bu 2 -Update Windows build deps & DLLs, Use Python 3.8, libsodium.dll 1.0.18, OpenSSL dlls to 1.1.1k (#59865) -.IP \(bu 2 -Salt api verifies proper log file path when providing \(aq\-\-log\-file\(aq from the cli (#59880) -.IP \(bu 2 -Detect Mendel Linux as Debian (#59892) -.IP \(bu 2 -Fixed compilation of requisite_ins by also checking state type along with name/id (#59922) -.IP \(bu 2 -Fix xen._get_vm() to not break silently when a VM and a template on XenServer have the same name. (#59932) -.IP \(bu 2 -Added missing space for nftables.build_rule when using saddr or daddr. (#59958) -.IP \(bu 2 -Add back support to load old entrypoints by iterating instead of type checking (#59961) -.IP \(bu 2 -Fixed interrupting salt\-call in a pdb session. (#59966) +Repo File: You need to update your repo file to point to the new repo paths for your platform. After the repo +file is updated, upgrade your Salt packages. .IP \(bu 2 -Validate we can import map files in states (#60003) -.IP \(bu 2 -Update alter_db to return True or False depending on the success of failure of the alter. Update grant_exists to only use the full list of available privileges when the grant is on the global level, eg. datbase is "\fI\&.\fP". (#60031) -.IP \(bu 2 -Fixed firewalld.list_zones when any "rich rules" is set (#60033) -.IP \(bu 2 -IPCMessageSubscriber objects expose their connect method as a corotine so they -can be wrapped by SyncWrapper. (#60049) -.IP \(bu 2 -Allow for Napalm dependency netmiko_mod to load correctly when used by Napalm with Cisco IOS (#60061) -.IP \(bu 2 -Ensure proper access to the created temporary file when \fBrunas\fP is passed to \fBcmd.exec_code_all\fP (#60072) -.IP \(bu 2 -Fixed an IndexError in pkgng.latest_version when querying an unknown package. (#60105) -.IP \(bu 2 -Fixed pkgng.latest_version when querying by origin (e.g. "shells/bash"). (#60108) -.IP \(bu 2 -Gracefuly handle errors in virt.vm_info (#60132) -.IP \(bu 2 -The LGPO Module now uses "Success and Failure" for normal audit settings and advanced audit settings (#60142) -.IP \(bu 2 -Fixing tests/pytests/unit/utils/scheduler/test_eval.py tests so the sleep happens before the status, so the job is given time before we check it. (#60149) -.IP \(bu 2 -Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5. (#60168) -.IP \(bu 2 -Fixed ValueError exception in state.show_state_usage (#60179) -.IP \(bu 2 -Redact the username and password when something goes wrong when using an HTTP source and we raise an exception. (#60203) -.IP \(bu 2 -Inject the Ansible functions into Salt\(aqs \fBansiblegate\fP module which was broken on the 3001 release. (#60207) -.IP \(bu 2 -Figure out the available Python version inside containers when executing "dockermod.call" function (#60229) -.IP \(bu 2 -Handle IPv6 route types such as anycast, multicast, etc when returned from IPv6 route table queries (#60232) -.IP \(bu 2 -Move the commonly used code that converts a list to a dictionary into salt.utils.beacons. Fixing inotify beacon close function to ensure the configuration is converted from the provided list format into a dictionary. (#60241) -.IP \(bu 2 -Set name of engine subprocesses (#60259) -.IP \(bu 2 -Properly discover block devices path in virt.running (#60296) -.IP \(bu 2 -Avoid exceptions when handling some exception cases. (#60330) -.IP \(bu 2 -Fixed faulty error message in npm.installed state. (#60339) -.IP \(bu 2 -Port option reinstated for Junos Proxy (accidentally removed) (#60340) -.IP \(bu 2 -Now hosts.rm_host can remove entries from /etc/hosts when this file have inline comments. (#60351) -.IP \(bu 2 -Fixes issue where the full same name is not used when making rights assignments with group policy (#60357) -.IP \(bu 2 -Fixed zabbix_host.present to not overwrite inventory_mode to "manual" everytime inventory is updated. (#60382) -.IP \(bu 2 -Allowed zabbix_host.present to do partial updates of inventory, also don\(aqt erase everything if inventory is missing in state definition. (#60389) -.IP \(bu 2 -Fixing the mysql_cache module to handle binary inserting binary data into the database. Initially adding tests. (#60398) -.IP \(bu 2 -Fixed host_inventory_get to not throw an exception if host does not exist (#60418) -.IP \(bu 2 -Check for /dev/kvm to detect KVM hypervisor. (#60419) -.IP \(bu 2 -Fixing file.accumulated handling of dependencies when the state_id is used instead of {function: state_id} format. (#60426) -.IP \(bu 2 -Adding the ability for yumpkg.remove to handle package names with widdcards. (#60461) -.IP \(bu 2 -Pass emulator path to get guest capabilities from libvirt (#60491) -.IP \(bu 2 -virt.get_disks: properly report qemu\-img errors (#60512) -.IP \(bu 2 -Make all platforms have psutils. This prevents a minion from starting if an instance is all ready running. (#60523) -.IP \(bu 2 -Ignore configuration for \(aqenable_fqdns_grains\(aq for AIX, Solaris and Juniper, assume False (#60529) -.IP \(bu 2 -Remove check for TIAMAT_BUILD enforcing USE_STATIC_REQUIREMENTS, this is now controled by Tiamat v7.10.1 and above (#60559) -.IP \(bu 2 -Have the beacon call run through a try...except, catching any errors, logging and firing an event that includes the error. -Fixing the swapusage beacon to ensure value is a string before we attempt to filter out the %. (#60585) -.IP \(bu 2 -Refactor loader into logical sub\-modules (#60594) -.IP \(bu 2 -Clean up references to ZMQDefaultLoop (#60617) -.IP \(bu 2 -change dep warn from Silicon to Phosphorus for the cmd,show,system_info and add_config functions in the nxos module. (#60669) -.IP \(bu 2 -Fix bug 60602 where the hetzner cloud provider isn\(aqt recognized correctly (#60675) -.IP \(bu 2 -Fix the \fBpwd.getpwnam\fP caching issue on macOS user module (#60676) -.IP \(bu 2 -Fixing beacons that can include a value in their configuration that may or may not included a percentage. We want to handle the situation where the percentage sign is not included and the value is not handled as a string. (#60684) -.IP \(bu 2 -Fix RuntimeError in process manager (#60749) -.IP \(bu 2 -Ensure all data that is being passed along to LDAP is in an OrderedSet and contains bytes. (#60760) -.IP \(bu 2 -Update the AWS API version so VMs spun up by salt\-cloud where the VPC has it enabled to assign ipv6 addresses by default, actually get ipv6 addresses assigned by default. (#60804) +Pip packages: You need to ensure any 3rd party pip packages are installed in the correct Tiamat path. +This can be accomplished in two ways: +.INDENT 2.0 .IP \(bu 2 -Remove un\-needed singletons from tranports (#60851) +\fBsalt pip install \fP .IP \(bu 2 -Deprecate \fBsalt.payload.Serial\fP (#60953) +Using the \fBpip.installed\fP Salt state. .UNINDENT -.SS Added +.UNINDENT +.sp +To install python packages into the system python environment, user\(aqs must now provide the \fBpip_bin\fP or \fBbin_env\fP to the pip state module. +.sp +For example: .INDENT 0.0 -.IP \(bu 2 -Add windows support for file.patch with patch.exe from git for windows optional packages (#44783) -.IP \(bu 2 -Added ability to pass exclude kwarg to salt.state inside orchestrate. (#49130) -.IP \(bu 2 -Added \fBsuccess_stdout\fP and \fBsuccess_stderr\fP arguments to \fBcmd.run\fP, to override default return code behavior. (#50597) -.IP \(bu 2 -The netbox pillar now been enhanced to add support for querying virtual machines -(in addition to devices), as well as minion interfaces and associated IP -addresses. (#51490) -.IP \(bu 2 -Add support for transactional systems, like openSUSE MicroOS (#58519) -.IP \(bu 2 -Added namespace headers to allow use of namespace from config to communicate with Vault Enterprise namespaces (#58585) -.IP \(bu 2 -boto3mod unit tests (#58713) -.IP \(bu 2 -New decorators \fBallow_one_of()\fP and \fBrequire_one_of()\fP (#58742) -.IP \(bu 2 -Added \fBnosync\fP switch to disable initial raid synchronization (#59193) -.IP \(bu 2 -Expanded the documentation for the netbox pillar. (#59398) -.IP \(bu 2 -Rocky Linux has been added to the RedHat os_family. (#59682) -.IP \(bu 2 -Add "poudriere \-i \-j jail_name" option to list jail information for poudriere (#59831) -.IP \(bu 2 -Added the grains.uuid on Windows platform (#59888) -.IP \(bu 2 -Add a salt.util.platform check to detect the AArch64 64\-bit extension of the ARM architecture. (#59915) -.IP \(bu 2 -Adding support for Deltaproxy controlled proxy minions into Salt Open. (#60090) -.IP \(bu 2 -Added functions to slsutil execution module to test if files exist in the state tree -Added funtion to slsutil execution module to search for a file by walking up the state tree (#60159) -.IP \(bu 2 -Allow module_refresh to also refresh available beacons, eg. following a Python library being installed and "refresh_modules" being passed as an argument in a state. (#60541) -.IP \(bu 2 -Add the \fBdetect_remote_minions\fP and \fBremote_minions_port\fP options to allow the master to detect remote ports for connected minions. This will allow users to detect Heist\-Salt minions the master is connected to over port 22 by default. (#60612) -.IP \(bu 2 -Add the python rpm\-vercmp library in the rpm_lowpkg.py module. (#60814) -.IP \(bu 2 -Allow a user to use the aptpkg.py module without installing python\-apt. (#60818) +.INDENT 3.5 +.sp +.nf +.ft C +lib\-foo: + pip.installed: + \- pip_bin: /usr/bin/pip3 +lib\-bar: + pip.installed: + \- bin_env: /usr/bin/python3 +.ft P +.fi +.UNINDENT .UNINDENT .sp \fBSEE ALSO:\fP