ansible组件 Ad-Hoc
ad hoc ---临时的,在ansible里需要快速执行,并不用保存命令的执行方式
简单命令
playbook 复杂命令
EXAMPLES: - name: install the latest version of Apache yum: name: httpd state: latest - name: ensure a list of packages installed yum: name: "{{ packages }}" vars: packages: - httpd - httpd-tools - name: remove the Apache package yum: name: httpd state: absent - name: install the latest version of Apache from the testing repo yum: name: httpd enablerepo: testing state: present - name: install one specific version of Apache yum: name: httpd-2.2.29-1.4.amzn1 state: present - name: upgrade all packages yum: name: '*' state: latest - name: upgrade all packages, excluding kernel & foo related packages yum: name: '*' state: latest exclude: kernel*,foo* - name: install the nginx rpm from a remote repo yum: name: http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state: present - name: install nginx rpm from a local file yum: name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state: present - name: install the 'Development tools' package group yum: name: "@Development tools" state: present - name: install the 'Gnome desktop' environment group yum: name: "@^gnome-desktop-environment" state: present - name: List ansible packages and register result to print with debug later. yum: list: ansible register: result - name: Install package with multiple repos enabled yum: name: sos enablerepo: "epel,ol7_latest" - name: Install package with multiple repos disabled yum: name: sos disablerepo: "epel,ol7_latest" - name: Install a list of packages yum: name: - nginx - postgresql - postgresql-server state: present - name: Download the nginx package but do not install it yum: name: - nginx state: latest download_only: true EXAMPLES: - name: example copying file with owner and permissions copy: src: /srv/myfiles/foo.conf dest: /etc/foo.conf owner: foo group: foo mode: 0644 - name: The same example as above, but using a symbolic mode equivalent to 0644 copy: src: /srv/myfiles/foo.conf dest: /etc/foo.conf owner: foo group: foo mode: u=rw,g=r,o=r - name: Another symbolic mode example, adding some permissions and removing others copy: src: /srv/myfiles/foo.conf dest: /etc/foo.conf owner: foo group: foo mode: u+rw,g-wx,o-rwx - name: Copy a new "ntp.conf file into place, backing up the original if it differs from the copied version copy: src: /mine/ntp.conf dest: /etc/ntp.conf owner: root group: root mode: 0644 backup: yes - name: Copy a new "sudoers" file into place, after passing validation with visudo copy: src: /mine/sudoers dest: /etc/sudoers validate: /usr/sbin/visudo -cf %s - name: Copy a "sudoers" file on the remote machine for editing copy: src: /etc/sudoers dest: /etc/sudoers.edit remote_src: yes validate: /usr/sbin/visudo -cf %s - name: Copy using the 'content' for inline data copy: content: '# This file was moved to /etc/other.conf' dest: /etc/mine.conf' RETURN VALUES: dest: description: destination file/path returned: success type: string sample: /path/to/file.txt src: description: source file used for the copy on the target machine returned: changed type: string sample: /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source md5sum: description: md5 checksum of the file after running copy returned: when supported type: string sample: 2a5aeecc61dc98c4d780b14b330e3282 checksum: description: sha1 checksum of the file after running copy returned: success type: string sample: 6e642bb8dd5c2e027bf21dd923337cbb4214f827 backup_file: description: name of backup file created returned: changed and if backup=yes type: string sample: /path/to/file.txt.2015-02-12@22:09~ gid: description: group id of the file, after execution returned: success type: int sample: 100 group: description: group of the file, after execution returned: success type: string sample: httpd owner: description: owner of the file, after execution returned: success type: string sample: httpd uid: description: owner id of the file, after execution returned: success type: int sample: 100 mode: description: permissions of the target, after execution returned: success type: string sample: 0644 size: description: size of the target, after execution returned: success type: int sample: 1220 state: description: state of the target, after execution returned: success type: string sample: file
EXAMPLES: - name: Add the user 'johnd' with a specific uid and a primary group of 'admin' user: name: johnd comment: John Doe uid: 1040 group: admin - name: Add the user 'james' with a bash shell, appending the group 'admins' and 'developers' to the user's groups user: name: james shell: /bin/bash groups: admins,developers append: yes - name: Remove the user 'johnd' user: name: johnd state: absent remove: yes - name: Create a 2048-bit SSH key for user jsmith in ~jsmith/.ssh/id_rsa user: name: jsmith generate_ssh_key: yes ssh_key_bits: 2048 ssh_key_file: .ssh/id_rsa - name: Added a consultant whose account you want to expire user: name: james18 shell: /bin/zsh groups: developers expires: 1422403387 - name: starting at version 2.6, modify user, remove expiry time user: name: james18 expires: -1 RETURN VALUES: append: description: Whether or not to append the user to groups returned: When state is 'present' and the user exists type: bool sample: True comment: description: Comment section from passwd file, usually the user name returned: When user exists type: string sample: Agent Smith create_home: description: Whether or not to create the home directory returned: When user does not exist and not check mode type: bool sample: True force: description: Whether or not a user account was forcibly deleted returned: When state is 'absent' and user exists type: bool sample: False group: description: Primary user group ID returned: When user exists type: int sample: 1001 groups: description: List of groups of which the user is a member returned: When C(groups) is not empty and C(state) is 'present' type: string sample: 'chrony,apache' home: description: "Path to user's home directory" returned: When C(state) is 'present' type: string sample: '/home/asmith' move_home: description: Whether or not to move an existing home directory returned: When C(state) is 'present' and user exists type: bool sample: False name: description: User account name returned: always type: string sample: asmith password: description: Masked value of the password returned: When C(state) is 'present' and C(password) is not empty type: string sample: 'NOT_LOGGING_PASSWORD' remove: description: Whether or not to remove the user account returned: When C(state) is 'absent' and user exists type: bool sample: True shell: description: User login shell returned: When C(state) is 'present' type: string sample: '/bin/bash' ssh_fingerprint: description: Fingerprint of generated SSH key returned: When C(generate_ssh_key) is C(True) type: string sample: '2048 SHA256:aYNHYcyVm87Igh0IMEDMbvW0QDlRQfE0aJugp684ko8 ansible-generated on host (RSA)' ssh_key_file: description: Path to generated SSH public key file returned: When C(generate_ssh_key) is C(True) type: string sample: /home/asmith/.ssh/id_rsa ssh_public_key: description: Generated SSH public key file returned: When C(generate_ssh_key) is C(True) type: string sample: > 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC95opt4SPEC06tOYsJQJIuN23BbLMGmYo8ysVZQc4h2DZE9ugbjWWGS1/pweUGjVstgzMkBEeBCB 618mUJBvdlEgea96QGjOwSB7/gmonduC7gsWDMNcOdSE3wJMTim4lddiBx4RgC9yXsJ6Tkz9BHD73MXPpT5ETnse+A3fw3IGVSjaueVnlUyUmOBf7fz d5u1u0e6Acju/8aZ/l17IDFiLke5IzlqIMRTEbDwLNeO84YQKWTm9fODHzhYe0yvxqLiK07 ansible-generated on host' stderr: description: Standard error from running commands returned: When stderr is returned by a command that is run type: string sample: Group wheels does not exist stdout: description: Standard output from running commands returned: When standard output is returned by the command that is run type: string sample: system: description: Whether or not the account is a system account returned: When C(system) is passed to the module and the account does not exist type: bool sample: True uid: description: User ID of the user account returned: When C(UID) is passed to the module type: int sample: 1044
[root@ftp:/root] > ansible webservers -m shell -a 'uptime' -o ansible03 | CHANGED | rc=0 | (stdout) 17:34:22 up 4:12, 2 users, load average: 0.00, 0.01, 0.05 ansible04 | CHANGED | rc=0 | (stdout) 17:34:22 up 3:45, 2 users, load average: 0.16, 0.05, 0.05 ansible02 | CHANGED | rc=0 | (stdout) 17:34:22 up 3:41, 1 user, load average: 0.00, 0.01, 0.05 ansible01 | CHANGED | rc=0 | (stdout) 17:34:22 up 4:11, 2 users, load average: 0.00, 0.01, 0.05 [root@ftp:/root] > ansible webservers -m shell -a 'uptime' -o -f 10 ansible03 | CHANGED | rc=0 | (stdout) 17:34:56 up 4:12, 2 users, load average: 0.00, 0.01, 0.05 ansible01 | CHANGED | rc=0 | (stdout) 17:34:56 up 4:12, 2 users, load average: 0.24, 0.06, 0.06 ansible04 | CHANGED | rc=0 | (stdout) 17:34:56 up 3:45, 2 users, load average: 0.10, 0.04, 0.05 ansible02 | CHANGED | rc=0 | (stdout) 17:34:56 up 3:41, 1 user, load average: 0.00, 0.01, 0.05 [root@ftp:/root] >
[root@ftp:/root] > ansible webservers -m copy -a 'src=/etc/hosts dest=/tmp/hosts owner=root group=root mode=777' ansible04 | CHANGED => { "changed": true, "checksum": "19aad245261f1772bffdabf3a6f5347312b20b46", "dest": "/tmp/hosts", "gid": 0, "group": "root", "md5sum": "39c0b18a971b35e3888758a2494b6083", "mode": "0777", "owner": "root", "size": 346, "src": "/root/.ansible/tmp/ansible-tmp-1552815757.85-214840644098444/source", "state": "file", "uid": 0 } ansible03 | CHANGED => { "changed": true, "checksum": "19aad245261f1772bffdabf3a6f5347312b20b46", "dest": "/tmp/hosts", "gid": 0, "group": "root", "md5sum": "39c0b18a971b35e3888758a2494b6083", "mode": "0777", "owner": "root", "size": 346, "src": "/root/.ansible/tmp/ansible-tmp-1552815757.82-188384435660718/source", "state": "file", "uid": 0 } ansible01 | CHANGED => { "changed": true, "checksum": "19aad245261f1772bffdabf3a6f5347312b20b46", "dest": "/tmp/hosts", "gid": 0, "group": "root", "md5sum": "39c0b18a971b35e3888758a2494b6083", "mode": "0777", "owner": "root", "size": 346, "src": "/root/.ansible/tmp/ansible-tmp-1552815757.71-273021490189009/source", "state": "file", "uid": 0 } ansible02 | CHANGED => { "changed": true, "checksum": "19aad245261f1772bffdabf3a6f5347312b20b46", "dest": "/tmp/hosts", "gid": 0, "group": "root", "md5sum": "39c0b18a971b35e3888758a2494b6083", "mode": "0777", "owner": "root", "size": 346, "src": "/root/.ansible/tmp/ansible-tmp-1552815757.77-7921352044895/source", "state": "file", "uid": 0 } [root@ftp:/root] >