Lnux高级运维-ansible
1.ansible常用模块ping
[root@afei ~]# ansible 192.168.240.134 -m ping
192.168.240.134 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
2.ansible常用模块template
[root@afei ~]# ansible 192.168.240.134 -m template -a 'src=/etc/yum.repos.d/CentOS-Base.repo dest=/etc/yum.repos.d/CentOS-Base.repo'
192.168.240.134 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"checksum": "e2c5e733b29668ef82633e043e094108e934d4d3",
"dest": "/etc/yum.repos.d/CentOS-Base.repo",
"gid": 0,
"group": "root",
"md5sum": "021e9bb5a28116f6b3fe608ddb806ebc",
"mode": "0644",
"owner": "root",
"secontext": "system_u:object_r:system_conf_t:s0",
"size": 1683,
"src": "/root/.ansible/tmp/ansible-tmp-1598841993.4891353-45978-233198990059154/source",
"state": "file",
"uid": 0
}
3.ansible常用模块yum
[root@afei ~]# ansible 192.168.240.134 -m dnf -a 'name=tree state=present'
192.168.240.134 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"msg": "Nothing to do",
"rc": 0,
"results": []
}
4.ansible常用模块copy
[root@afei ~]# ansible 192.168.240.134 -m copy -a 'src=/tmp/a.txt dest=/root/'
192.168.240.134 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/root/a.txt",
"gid": 0,
"group": "root",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"mode": "0644",
"owner": "root",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 0,
"src": "/root/.ansible/tmp/ansible-tmp-1598844534.0715942-46655-162967508866254/source",
"state": "file",
"uid": 0
}
5.ansible常用模块之group:此模块用于受控主机上添加删除组
[root@afei ~]# ansible all -m group -a 'name=runtime state=present'
192.168.240.134 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"gid": 1001,
"name": "runtime",
"state": "present",
"system": false
}
[root@localhost ~]# grep runtime /etc/group
runtime:x:1001:
6.ansible常用模块之user:此模块用于管理受控主机的用户账号
[root@afei ~]# ansible 192.168.240.134 -m user -a 'name=mysql uid=306 system=yes create_home=0 shell=/sbin/nologin state=present'
192.168.240.134 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"comment": "",
"create_home": false,
"group": 306,
"home": "/home/mysql",
"name": "mysql",
"shell": "/sbin/nologin",
"state": "present",
"system": true,
"uid": 306
}
7.ansible常用模块之service:此模块用于管理受控主机的服务
[root@afei ~]# ansible 192.168.240.134 -m shell -a 'systemctl is-active vsftpd'
192.168.240.134 | FAILED | rc=3 >>
inactivenon-zero return code(//查看受控主机上的vsftpd是否启动)
[root@afei ~]# ansible 192.168.240.134 -m service -a 'name=postfix state=started'
192.168.240.134 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": true,
"name": "postfix",
"state": "started",
"status": {
"ActiveEnterTimestampMonotonic": "0",
"ActiveExitTimestampMonotonic": "0",
"ActiveState": "inactive",
"After": "-.mount syslog.target basic.target sysinit.target network.target systemd-tmpfiles-setup.serv
8.playbook剧本编写
8.1.:格式化ansible playbook
[root@afei playbook]# vim myplay.yml
---
- name: service control
hosts: 192.168.240.134
tasks:
- name: stop postfix
service:
name: postfix
state: stopped
enabled: no
[root@afei playbook]# cat myplay.yml
---
- name: service control
hosts: 192.168.240.134
tasks:
- name: stop postfix
service:
name: postfix
state: stopped
enabled: no
8.2.:运行 playbook
[root@afei playbook]# ansible-playbook myplay.yml
PLAY [service control] *********************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.240.134]
TASK [stop postfix] ************************************************************
changed: [192.168.240.134]
PLAY RECAP *********************************************************************
192.168.240.134 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
----------------------------------------------------------
### #在受控主机上查看postfix运行状态
[root@localhost ~]# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled; vendor pr>
Active: inactive (dead)
Sep 01 04:14:00 localhost.localdomain systemd[1]: Starting Postfix Mail Transpo>
Sep 01 04:14:01 localhost.localdomain postfix/master[43137]: daemon started -- >
Sep 01 04:14:01 localhost.localdomain systemd[1]: Started Postfix Mail Transpor>
Sep 01 04:45:11 localhost.localdomain systemd[1]: Stopping Postfix Mail Transpo>
Sep 01 04:45:11 localhost.localdomain systemd[1]: Stopped Postfix Mail Transpor>
lines 1-9/9 (END)
标题
8.3.:ansible-playbook提高输出的详细程度(-v,-vv,-vvvv,这里v越多越详细)
[root@afei playbook]# ansible-playbook myplay.yml -v
Using /etc/ansible/ansible.cfg as config file
PLAY [service control] *********************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.240.134]
TASK [stop postfix] ************************************************************
ok: [192.168.240.134] => {"changed": false, "enabled": false, "name": "postfix", "state": "stopped", "status": {"ActiveEnterTimestampMonotonic": "0", "ActiveExitTimestampMonotonic": "0", "ActiveState": "inactive", "After": "network.target sysinit.target -.mount tmp.mount systemd-journald.socket system.slice syslog.target basic.target systemd-tmpfiles-setup.service", "AllowIsolate": "no", "AllowedCPUs": "", "AllowedMemoryNodes": "", "AmbientCapabilities": "", "AssertResult": "no", "AssertTimestampMonotonic": "0", "Before": "shutdown.target", "BlockIOAccounting": "no", "BlockIOWeight": "[not set]", "CPUAccounting": "no", "CPUAffinity": "", "CPUQuotaPerSecUSec": "infinity", "CPUSchedulingPolicy": "0", "CPUSchedulingPriority": "0", "CPUSchedulingResetOnFork": "no", "CPUShares": "[not set]", "CPUUsageNSec": "[not set]", "CPUWeight": "[not set]", "CacheDirectoryMode": "0755", "CanIsolate": "no", "CanReload": "yes", "CanStart": "yes", "CanStop": "yes", "CapabilityBoundingSet": "cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_fsetid cap_kill cap_setgid cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service cap_net_broadcast cap_net_raw cap_ipc_lock cap_ipc_owner cap_sys_chroot cap_sys_ptrace cap_sys_pacct cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend", "CollectMode": "inactive", "ConditionResult": "no", "ConditionTimestampMonotonic": "0", "ConfigurationDirectoryMode": "0755", "Conflicts": "sendmail.service shutdown.target exim.service", "ControlPID": "0", "DefaultDependencies": "yes", "Delegate": "no", "Description": "Postfix Mail Transport Agent", "DevicePolicy": "closed", "DynamicUser": "no", "EffectiveCPUs": "", "EffectiveMemoryNodes": "", "EnvironmentFiles": "/etc/sysconfig/network (ignore_errors=yes)", "ExecMainCode": "0", "ExecMainExitTimestampMonotonic": "0", "ExecMainPID": "0", "ExecMainStartTimestampMonotonic": "0", "ExecMainStatus": "0", "ExecReload": "{ path=/usr/sbin/postfix ; argv[]=/usr/sbin/postfix reload ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }", "ExecStart": "{ path=/usr/sbin/postfix ; argv[]=/usr/sbin/postfix start ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }", "ExecStartPre": "{ path=/usr/libexec/postfix/chroot-update ; argv[]=/usr/libexec/postfix/chroot-update ; ignore_errors=yes ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }", "ExecStop": "{ path=/usr/sbin/postfix ; argv[]=/usr/sbin/postfix stop ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }", "FailureAction": "none", "FileDescriptorStoreMax": "0", "FragmentPath": "/usr/lib/systemd/system/postfix.service", "GID": "[not set]", "GuessMainPID": "yes", "IOAccounting": "no", "IOSchedulingClass": "0", "IOSchedulingPriority": "0", "IOWeight": "[not set]", "IPAccounting": "no", "IPEgressBytes": "18446744073709551615", "IPEgressPackets": "18446744073709551615", "IPIngressBytes": "18446744073709551615", "IPIngressPackets": "18446744073709551615", "Id": "postfix.service", "IgnoreOnIsolate": "no", "IgnoreSIGPIPE": "yes", "InactiveEnterTimestampMonotonic": "0", "InactiveExitTimestampMonotonic": "0", "JobRunningTimeoutUSec": "infinity", "JobTimeoutAction": "none", "JobTimeoutUSec": "infinity", "KeyringMode": "private", "KillMode": "control-group", "KillSignal": "15", "LimitAS": "infinity", "LimitASSoft": "infinity", "LimitCORE": "infinity", "LimitCORESoft": "infinity", "LimitCPU": "infinity", "LimitCPUSoft": "infinity", "LimitDATA": "infinity", "LimitDATASoft": "infinity", "LimitFSIZE": "infinity", "LimitFSIZESoft": "infinity", "LimitLOCKS": "infinity", "LimitLOCKSSoft": "infinity", "LimitMEMLOCK": "65536", "LimitMEMLOCKSoft": "65536", "LimitMSGQUEUE": "819200", "LimitMSGQUEUESoft": "819200", "LimitNICE": "0", "LimitNICESoft": "0", "LimitNOFILE": "262144", "LimitNOFILESoft": "1024", "LimitNPROC": "6970", "LimitNPROCSoft": "6970", "LimitRSS": "infinity", "LimitRSSSoft": "infinity", "LimitRTPRIO": "0", "LimitRTPRIOSoft": "0", "LimitRTTIME": "infinity", "LimitRTTIMESoft": "infinity", "LimitSIGPENDING": "6970", "LimitSIGPENDINGSoft": "6970", "LimitSTACK": "infinity", "LimitSTACKSoft": "8388608", "LoadState": "loaded", "LockPersonality": "no", "LogLevelMax": "-1", "LogRateLimitBurst": "0", "LogRateLimitIntervalUSec": "0", "LogsDirectoryMode": "0755", "MainPID": "0", "MemoryAccounting": "yes", "MemoryCurrent": "[not set]", "MemoryDenyWriteExecute": "no", "MemoryHigh": "infinity", "MemoryLimit": "infinity", "MemoryLow": "0", "MemoryMax": "infinity", "MemorySwapMax": "infinity", "MountAPIVFS": "no", "MountFlags": "", "NFileDescriptorStore": "0", "NRestarts": "0", "NUMAMask": "", "NUMAPolicy": "n/a", "Names": "postfix.service", "NeedDaemonReload": "no", "Nice": "0", "NoNewPrivileges": "no", "NonBlocking": "no", "NotifyAccess": "none", "OOMScoreAdjust": "0", "OnFailureJobMode": "replace", "PIDFile": "/var/spool/postfix/pid/master.pid", "PermissionsStartOnly": "no", "Perpetual": "no", "PrivateDevices": "yes", "PrivateMounts": "no", "PrivateNetwork": "no", "PrivateTmp": "yes", "PrivateUsers": "no", "ProtectControlGroups": "no", "ProtectHome": "no", "ProtectKernelModules": "no", "ProtectKernelTunables": "no", "ProtectSystem": "yes", "RefuseManualStart": "no", "RefuseManualStop": "no", "RemainAfterExit": "no", "RemoveIPC": "no", "Requires": "-.mount sysinit.target system.slice", "RequiresMountsFor": "/var/tmp", "Restart": "no", "RestartUSec": "100ms", "RestrictNamespaces": "no", "RestrictRealtime": "no", "RestrictSUIDSGID": "no", "Result": "success", "RootDirectoryStartOnly": "no", "RuntimeDirectoryMode": "0755", "RuntimeDirectoryPreserve": "no", "RuntimeMaxUSec": "infinity", "SameProcessGroup": "no", "SecureBits": "0", "SendSIGHUP": "no", "SendSIGKILL": "yes", "Slice": "system.slice", "StandardError": "inherit", "StandardInput": "null", "StandardInputData": "", "StandardOutput": "journal", "StartLimitAction": "none", "StartLimitBurst": "5", "StartLimitIntervalUSec": "10s", "StartupBlockIOWeight": "[not set]", "StartupCPUShares": "[not set]", "StartupCPUWeight": "[not set]", "StartupIOWeight": "[not set]", "StateChangeTimestampMonotonic": "0", "StateDirectoryMode": "0755", "StatusErrno": "0", "StopWhenUnneeded": "no", "SubState": "dead", "SuccessAction": "none", "SyslogFacility": "3", "SyslogLevel": "6", "SyslogLevelPrefix": "yes", "SyslogPriority": "30", "SystemCallErrorNumber": "0", "TTYReset": "no", "TTYVHangup": "no", "TTYVTDisallocate": "no", "TasksAccounting": "yes", "TasksCurrent": "[not set]", "TasksMax": "11152", "TimeoutStartUSec": "1min 30s", "TimeoutStopUSec": "1min 30s", "TimerSlackNSec": "50000", "Transient": "no", "Type": "forking", "UID": "[not set]", "UMask": "0022", "UnitFilePreset": "disabled", "UnitFileState": "disabled", "UtmpMode": "init", "WatchdogTimestampMonotonic": "0", "WatchdogUSec": "0"}}
PLAY RECAP *********************************************************************
192.168.240.134 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0