少年恃险若平地,独倚长剑凌清秋。这篇文章主要讲述自动化运维工具ansible概述相关的知识,希望能为你提供帮助。
1.ansible安装
1.1 sh ansible_v2.9.0_install.sh,具体定义。需要程序包请留言。
1.2 安装完后默认/etc/ansibe生成如下文件及文件夹ansible.cfg(ansible 配置文件);
hosts(远程主机及主机组管理);
roles(角色文件);
yml(自定义ansible-playbook使用yml文件)
1.3 hosts定义组组内成员可以是ip地址也可以是主机名,分组是为了方便管理。
[webservers]
www[1:50].example.com
192.168.1.50
[databases]
db-[a:f].example.com
[allhosts:children] #主机的变量可以通过集成关系,继承到最高等级的组的变量。
webservers
databases
Hosts部分经常用到变量部分,可以附加到主机后边,以空格分隔。如:
ansible_ssh_host#指定被管理主机的真实ip
ansible_ssh_port#用于指定被管理主机的ssh端口
ansible_ssh_user#ssh连接用户名
ansible_ssh_pass#ssh连接的密码
2.ansible 常用模块介绍使用
2.1 command 可以运行远程权限范围所有的shell命令,即执行远程主机上的命令。ansible manage -m command -a “free -m”
2.2 shell执行远端主机的shell脚本文件。ansible tomcat -m shell -a /usr/local/jdk1.8.0_181/bin/jstack -l $(ps -ef |grep -v grep|grep java|awk "
{print \\$2}"
) >
>
jstack.out
2.3 copy实现主控端向目标主机拷贝文件。ansible manage -m copy -a “src=https://www.songbingjia.com/android/a.txt dest=/root/a.txt”
同时也可以执行复制目录,路径用“/”结尾,只能复制目录里的内容,没有使用“/”来结尾,包含目录在内的整个内容。
2.4 user远程主机用户管理ansible manage-muser -a "
name=johnd"
添加用户
ansible manage -m user -a "
name=johnd state=absent remove=yes"
group 指定用户主组,groups 指定附加组;shell 指定默认shell
删除用户 state=absent:状态为卸载,state=present :状态为安装。
2.5 file模块修改文件的属组和权限.ansible 192.168.183.200 -mfile -a "
dest=/home/cloud mode=777 owner=jira group=jira "
删除文件:
ansible 192.168.183.200 -m file -a "
dest=/home/cloud/atlassia state=absent "
创建目录及文件:
ansible 192.168.183.200 -m file -a "
dest=/home/cloud/teststate=directory "
3.ansible-playbook 自定义yml文件
即把ansible一条一条执行的任务升级为按一定的逻辑把多任务组成一个文件,通过ansible-playbook 指定这个文件执行任务。
ansible-playbook test.yml --syntax-check检查语法
test.yml 模板定义:
- hosts: webserver
remote_user: root
tasks:
- name: install httpd package
yum: name=httpd state=latest
- name: install congfiguration file for httpd
copy: src=https://www.songbingjia.com/root/playboos/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
tags:
- conf
notify:
- restart httpd
- name: start httpd service
service: enabled=yes name=httpd state=started
handlers:
- name: restart httpd
service: name=httpd state=restarted sleep=5
3.1notify,handlers使用说明如上test.yml案例使用。
task改变了系统状态后,就会触发通知机制,notify即通知机制,handers只会在所有任务执行完后执行,即便多次被通知,也只执行一次。一般作为配置文件更改重启服务使用。
3.2tags 只需要运行其中特定部分的配置无需运行整个playbook会有用。如上test.yml定义,如只需要更改远程主机的配置文件,不涉及其他操作。
ansible-playbook test.yml --tags=’conf’
3.3service 管理远程主机上的服务如test.yml定义
enabled 是否设置为开机启动 yes/no ; name 服务名称;sleep如果执行了restart,在stop和start中间沉睡几秒; state: 对当前服务启动,停止,重启,重新加载。
3.4yum模块管理软件包如test.yml定义,config_file yum的配置文件;disablerepo:不启用某个源;enablerepo启用某个源;name 操作软件包名称;state 是要删除还是安装软件包,present(安装),installed(安装),latest(安装最新版本),删除软件包用absent,removed
3.5 item 当使用需要重复执行任务时,可以使用迭代机制。将需要使用迭代的内容定义为item作为变量,通过with_items语句指明迭代的元素列表。
- name: add several users
user: name={{ item.name }} state=present groups={{ item.groups }}
with_items:
- { name: testuser1, groups: wheel }
- { name: testuser2, groups: root }
3.5file/unarchive 文件及目录管理path 定义文件,目录路径
owner定义文件,目录属主
Group 定义文件,目录属组
mode 定义文件,目录权限
state有几个选项:directory(目录不存在创建目录) touch(文件不存在创建文件) absent(删除目录,文件或者是取消链接文件) link(链接文件)
- name: link files
file: src=https://www.songbingjia.com/etc/ssh/ssd_config dest=/mnt/sshd_config owner=sshd mode=600 state=link
unarchive模块用来实现解压缩,就是将压缩文件解压分发到远程不同节点上。
src源文件路径 dest:指定远程主机的文件路径。 mode:设置远程主机上文件权限。
3.6 linefile
- linefile: dest=/etc/profileinsertafter=’ulimit(.*)’ line=”ulimit -c unlimited”
- linefile: dest=/etc/profile line=”export JAVA_HOME=/usr/java”
- linefile: dest=/etc/selinux/config regexp=’SELINUX=(.*)’ line=’SELINUX=disabled’
- linefile: dest=/etc/resolve.confregexp=’search(.*)’state=absent
dest可以换为path,代表操作的远程主机上的文件路径。 regexp正则表达式 ,要替换的内容规则 line:指定替换后的文本内容; state: 设置为absent代表删除的行 ;
insertafter 可以将文本插入到“指定的行”之后
3.7 register
- hosts: 192.168.0.110
remoter_user: root
tasks:
- name: hostname command
shell: hostname
register: host_result
- debug: var=host_result.stdout
- debug: msg="output: {{host_result.stdout}}"
【自动化运维工具ansible概述】会把shell执行的结果传给host_result变量中, --debug 调试模式,看获取的变量是否正确。 msg=" output: {{host_result.stdout}}" 为变量赋予键名称。
推荐阅读
- Python 网络爬虫实战(爬取南方周末新闻文章(带关键词筛选))
- IFIX 需要权限打开某个画面
- Ansible之ansible.cfg
- 庖丁解牛之Android平台RTSP|RTMP播放器设计
- CentOS8.3下配置环境变量,实现执行history的时候可以看到执行命令的时间
- 当SantuCommerce插件的iframe打开时,WordPress主题损坏
- WordPress主题开发-模板引擎[关闭]
- WordPress主题开发(单击按钮时不执行javascript代码)
- WordPress主题开发|||目录主题名称