- 1. 安装
- 2. 配置
- 2.1. ansible.cfg
- 2.2. hosts
- 3. ansible的命令
- 4. ansible-playbook
1. 安装
以centos为例。
yum install -y ansible
2. 配置
默认配置目录在/etc/ansible/,主要有以下两个配置:
- ansible.cfg:ansible的配置文件
- hosts:配置ansible所连接的机器IP信息
2.1. ansible.cfg
2.2. hosts
# This is the default ansible 'hosts' file.## It should live in /etc/ansible/hosts## - Comments begin with the '#' character# - Blank lines are ignored# - Groups of hosts are delimited by [header] elements# - You can enter hostnames or ip addresses# - A hostname/ip can be a member of multiple groups# Ex 1: Ungrouped hosts, specify before any group headers.# green.example.com# blue.example.com# 192.168.100.1# 192.168.100.10# Ex 2: A collection of hosts belonging to the 'webservers' group# [webservers]# alpha.example.org# beta.example.org# 192.168.1.100# 192.168.1.110# If you have multiple hosts following a pattern you can specify# them like this:# www[001:006].example.com# Ex 3: A collection of database servers in the 'dbservers' group# [dbservers]## db01.intranet.mydomain.net# db02.intranet.mydomain.net# 10.25.1.56# 10.25.1.57# Here's another example of host ranges, this time there are no# leading 0s:# db-[99:101]-node.example.com[k8s]192.168.201.52192.168.201.53192.168.201.54192.168.201.55192.168.201.56192.168.201.57
3. ansible的命令
命令格式为:ansible
host-pattern:即hosts文件中配置的集群名称options:命令操作符
例如:ansible k8s -a ‘uname -r’
[root@k8s-master ansible]# ansible k8s -a 'uname -r'172.16.201.56 | SUCCESS | rc=0 >>4.16.11-1.el7.elrepo.x86_64172.16.201.55 | SUCCESS | rc=0 >>4.16.11-1.el7.elrepo.x86_64172.16.201.54 | SUCCESS | rc=0 >>4.16.11-1.el7.elrepo.x86_64172.16.201.53 | SUCCESS | rc=0 >>4.16.11-1.el7.elrepo.x86_64172.16.201.52 | SUCCESS | rc=0 >>4.16.11-1.el7.elrepo.x86_64172.16.201.57 | SUCCESS | rc=0 >>4.16.11-1.el7.elrepo.x86_64
具体的命令信息:
Usage: ansible <host-pattern> [options]Define and run a single task 'playbook' against a set of hostsOptions:-a MODULE_ARGS, --args=MODULE_ARGSmodule arguments--ask-vault-pass ask for vault password-B SECONDS, --background=SECONDSrun asynchronously, failing after X seconds(default=N/A)-C, --check don't make any changes; instead, try to predict someof the changes that may occur-D, --diff when changing (small) files and templates, show thedifferences in those files; works great with --check-e EXTRA_VARS, --extra-vars=EXTRA_VARSset additional variables as key=value or YAML/JSON, iffilename prepend with @-f FORKS, --forks=FORKSspecify number of parallel processes to use(default=5)-h, --help show this help message and exit-i INVENTORY, --inventory=INVENTORY, --inventory-file=INVENTORYspecify inventory host path or comma separated hostlist. --inventory-file is deprecated-l SUBSET, --limit=SUBSETfurther limit selected hosts to an additional pattern--list-hosts outputs a list of matching hosts; does not executeanything else-m MODULE_NAME, --module-name=MODULE_NAMEmodule name to execute (default=command)-M MODULE_PATH, --module-path=MODULE_PATHprepend colon-separated path(s) to module library(default=[u'/root/.ansible/plugins/modules',u'/usr/share/ansible/plugins/modules'])-o, --one-line condense output--playbook-dir=BASEDIRSince this tool does not use playbooks, use this as asubsitute playbook directory.This sets the relativepath for many features including roles/ group_vars/etc.-P POLL_INTERVAL, --poll=POLL_INTERVALset the poll interval if using -B (default=15)--syntax-check perform a syntax check on the playbook, but do notexecute it-t TREE, --tree=TREE log output to this directory--vault-id=VAULT_IDS the vault identity to use--vault-password-file=VAULT_PASSWORD_FILESvault password file-v, --verbose verbose mode (-vvv for more, -vvvv to enableconnection debugging)--version show program's version number and exitConnection Options:control as whom and how to connect to hosts-k, --ask-pass ask for connection password--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILEuse this file to authenticate the connection-u REMOTE_USER, --user=REMOTE_USERconnect as this user (default=None)-c CONNECTION, --connection=CONNECTIONconnection type to use (default=smart)-T TIMEOUT, --timeout=TIMEOUToverride the connection timeout in seconds(default=10)--ssh-common-args=SSH_COMMON_ARGSspecify common arguments to pass to sftp/scp/ssh (e.g.ProxyCommand)--sftp-extra-args=SFTP_EXTRA_ARGSspecify extra arguments to pass to sftp only (e.g. -f,-l)--scp-extra-args=SCP_EXTRA_ARGSspecify extra arguments to pass to scp only (e.g. -l)--ssh-extra-args=SSH_EXTRA_ARGSspecify extra arguments to pass to ssh only (e.g. -R)Privilege Escalation Options:control how and which user you become as on target hosts-s, --sudo run operations with sudo (nopasswd) (deprecated, usebecome)-U SUDO_USER, --sudo-user=SUDO_USERdesired sudo user (default=root) (deprecated, usebecome)-S, --su run operations with su (deprecated, use become)-R SU_USER, --su-user=SU_USERrun operations with su as this user (default=None)(deprecated, use become)-b, --become run operations with become (does not imply passwordprompting)--become-method=BECOME_METHODprivilege escalation method to use (default=sudo),valid choices: [ sudo | su | pbrun | pfexec | doas |dzdo | ksu | runas | pmrun | enable ]--become-user=BECOME_USERrun operations as this user (default=root)--ask-sudo-pass ask for sudo password (deprecated, use become)--ask-su-pass ask for su password (deprecated, use become)-K, --ask-become-passask for privilege escalation passwordSome modules do not make sense in Ad-Hoc (include, meta, etc)
4. ansible-playbook
Usage: ansible-playbook [options] playbook.yml [playbook2 ...]Runs Ansible playbooks, executing the defined tasks on the targeted hosts.Options:--ask-vault-pass ask for vault password-C, --check don't make any changes; instead, try to predict someof the changes that may occur-D, --diff when changing (small) files and templates, show thedifferences in those files; works great with --check-e EXTRA_VARS, --extra-vars=EXTRA_VARSset additional variables as key=value or YAML/JSON, iffilename prepend with @--flush-cache clear the fact cache for every host in inventory--force-handlers run handlers even if a task fails-f FORKS, --forks=FORKSspecify number of parallel processes to use(default=5)-h, --help show this help message and exit-i INVENTORY, --inventory=INVENTORY, --inventory-file=INVENTORYspecify inventory host path or comma separated hostlist. --inventory-file is deprecated-l SUBSET, --limit=SUBSETfurther limit selected hosts to an additional pattern--list-hosts outputs a list of matching hosts; does not executeanything else--list-tags list all available tags--list-tasks list all tasks that would be executed-M MODULE_PATH, --module-path=MODULE_PATHprepend colon-separated path(s) to module library(default=[u'/root/.ansible/plugins/modules',u'/usr/share/ansible/plugins/modules'])--skip-tags=SKIP_TAGSonly run plays and tasks whose tags do not match thesevalues--start-at-task=START_AT_TASKstart the playbook at the task matching this name--step one-step-at-a-time: confirm each task before running--syntax-check perform a syntax check on the playbook, but do notexecute it-t TAGS, --tags=TAGS only run plays and tasks tagged with these values--vault-id=VAULT_IDS the vault identity to use--vault-password-file=VAULT_PASSWORD_FILESvault password file-v, --verbose verbose mode (-vvv for more, -vvvv to enableconnection debugging)--version show program's version number and exitConnection Options:control as whom and how to connect to hosts-k, --ask-pass ask for connection password--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILEuse this file to authenticate the connection-u REMOTE_USER, --user=REMOTE_USERconnect as this user (default=None)-c CONNECTION, --connection=CONNECTIONconnection type to use (default=smart)-T TIMEOUT, --timeout=TIMEOUToverride the connection timeout in seconds(default=10)--ssh-common-args=SSH_COMMON_ARGSspecify common arguments to pass to sftp/scp/ssh (e.g.ProxyCommand)--sftp-extra-args=SFTP_EXTRA_ARGSspecify extra arguments to pass to sftp only (e.g. -f,-l)--scp-extra-args=SCP_EXTRA_ARGSspecify extra arguments to pass to scp only (e.g. -l)--ssh-extra-args=SSH_EXTRA_ARGSspecify extra arguments to pass to ssh only (e.g. -R)Privilege Escalation Options:control how and which user you become as on target hosts-s, --sudo run operations with sudo (nopasswd) (deprecated, usebecome)-U SUDO_USER, --sudo-user=SUDO_USERdesired sudo user (default=root) (deprecated, usebecome)-S, --su run operations with su (deprecated, use become)-R SU_USER, --su-user=SU_USERrun operations with su as this user (default=None)(deprecated, use become)-b, --become run operations with become (does not imply passwordprompting)--become-method=BECOME_METHODprivilege escalation method to use (default=sudo),valid choices: [ sudo | su | pbrun | pfexec | doas |dzdo | ksu | runas | pmrun | enable ]--become-user=BECOME_USERrun operations as this user (default=root)--ask-sudo-pass ask for sudo password (deprecated, use become)--ask-su-pass ask for su password (deprecated, use become)-K, --ask-become-passask for privilege escalation password
