- 浏览: 550752 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- 随笔 (4)
- Spring (13)
- Java (61)
- HTTP (3)
- Windows (1)
- CI(Continuous Integration) (3)
- Dozer (1)
- Apache (11)
- DB (7)
- Architecture (41)
- Design Patterns (11)
- Test (5)
- Agile (1)
- ORM (3)
- PMP (2)
- ESB (2)
- Maven (5)
- IDE (1)
- Camel (1)
- Webservice (3)
- MySQL (6)
- CentOS (14)
- Linux (19)
- BI (3)
- RPC (2)
- Cluster (9)
- NoSQL (7)
- Oracle (25)
- Loadbalance (7)
- Web (5)
- tomcat (1)
- freemarker (1)
- 制造 (0)
最新评论
-
panamera:
如果设置了连接需要密码,Dynamic Broker-Clus ...
ActiveMQ 集群配置 -
panamera:
请问你的最后一种模式Broker-C节点是不是应该也要修改持久 ...
ActiveMQ 集群配置 -
maosheng:
longshao_feng 写道楼主使用 文件共享 模式的ma ...
ActiveMQ 集群配置 -
longshao_feng:
楼主使用 文件共享 模式的master-slave,produ ...
ActiveMQ 集群配置 -
tanglanwen:
感触很深,必定谨记!
少走弯路的十条忠告
一、概述
Ansible 实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,
Ansible只是提供一种框架。
Ansible 采用parmiko 协议库,通过SSH或者ZeroMQ 等连接主机。Ansible在控制主机将Ansible模块通过SSH协议推送到被管节点执行,执行完之后自动删除。
控制主机与被控节点之间支持local、SSH、ZeroMQ三种连接方式,默认使用基于SSH 的连接。
Ansible 提供了一个在线 playbook 分享平台,地址:https://galaxy.ansible.com/
二、Ansible安装
CentOS 7.0,自带python 2.7.5
1、rpm 包安装:
##安装相应的基础模块,建议使用yum直接安装
# yum install python26 python26-PyYAML python26-paramiko python26-jinja2 python-simplejson -y
# yum install -y ansible
或者如下
2、tar 包安装:
##下载ansible(http://releases.ansible.com/ansible/)可在改页面选择相应的版本进行下载
# tar -zvxf ansible-2.9.9.tar.gz
# cd ansible-2.9.9
# python setup.py build
# python setup.py install
# mkdir /etc/ansible
# cp -r examples/* /etc/ansible
# ansible --version
# ansible --help
3、设置SSH无密码登录(推荐方法)
为了避免ansible下发指令时输入被管理主机的密码,可以通过证书签名达到SSH无密码登录的效果,使用ssh-keygen产生一对密匙,使用ssh-copy-id来下发生成的公匙
关闭主机与被管理服务器的防火墙
#systemctl stop firewalld.service
# setenforce 0
setenforce: SELinux is disabled
生成密钥:
ssh-keygen -t rsa ##有询问直接按回车键即可,将在/root/.ssh/下生成一对密钥,其中id_rsa为私钥,id_rsa.pub为公钥
使用ssh-copy-id命令来复制Ansible公钥到节点,下发密钥就是控制主把公钥id_rsa.pub下发到被管节点上用户下的.ssh目录,并重命名成authorized_keys,且权限值为400。
ssh-copy-id root@节点ip
# ssh-keygen -t rsa ##生产一对密钥
# ssh-copy-id root@192.101.11.159 ##下发生产的公钥
# ssh-copy-id root@192.101.11.160 ##下发生产的公钥
# ssh-copy-id root@192.101.11.161 ##下发生产的公钥
SSH访问测试验证:
# ssh 192.101.11.159
# ssh 192.101.11.160
# ssh 192.101.11.161
4、配置文件
在运行Ansible命令时,命令将会按照预先设定的顺序查找配置文件
1)ANSIBLE_CONFIG:首先,Ansible命令会检查环境变量,及这个环境变量将指向的配置文件
2)~ /.snsible.cfg:再次,将会检查当前用户home目录下的.ansible.cfg配置文件
3)/etc/ansible/ansible.cfg:最后,将会检查在用软件包管理工具安装Ansible 时自动产生的配置文件
ansible主要相关配置文件在/etc/ansible目录下
# cd /etc/ansible/
总用量 24
-rw-r--r--. 1 root root 20269 10月 9 09:34 ansible.cfg #配置文件
-rw-r--r--. 1 root root 1016 10月 9 09:34 hosts #管控主机文件
drwxr-xr-x. 2 root root 6 10月 9 09:34 roles
# pwd
/etc/ansible
# ls
ansible.cfg hosts scripts
5、Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码、是否开启sudo认证、action_plugins插件的位置、hosts主机组的位置、是否开启log功能、默认端口、key文件位置等等,默认的都是关闭,现在需要开启remote_port和private_key_file两个配置。
Ansible命令都是并发执行的,默认的并发数目由ansible.cfg中的forks值来控制。
# vi ansible.cfg
remote_port = 22 ####用于连接远程ssh的端口
private_key_file = /root/.ssh/id_rsa_web ####第三步第一种方式使用,用于免密码登陆的
6、定义hosts主机组(被控制主机)
##ansible通过读取默认主机清单/etc/ansible/hosts文件,修改主机与组配置后,可同时连接到多个被管理主机上执行任务。具体配置如下:
# vi hosts
#[web] #被管理主机分类
#192.168.180.4
#192.168.180.5
#[db] #被管理主机分类
#192.168.180.2
[k8s] #被管理主机分类
192.101.11.159
192.101.11.160
192.101.11.161
主机清单/etc/ansible/hosts 定义模式:
[web] #被管理主机分类
192.168.180.4 ansible_ssh_pass='123456' ##定义了SSH登录密码
192.168.180.5 ansible_ssh_pass='123456' ##定义了SSH登录密码
[docker]
172.17.33.10[1:8] ## 172.17.33.101 ~ 172.17.33.108
[docker:vars]
ansible_ssh_pass='123456' ##针对docker组使用inventory内置变量定义了SSH登录密码
三、Ansible 使用
# cd /home/ansible-2.9.9/bin/
# ./ansible --version
到此,ansible的环境就部署完成了。
用来测试远程主机的运行状态
######只测试k8s组的主机
# ./ansible k8s -m ping
192.101.11.159 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.101.11.160 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.101.11.161 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on
deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
######只测试web组的主机 负载(uptime)
# ./ansible k8s -m command -a 'uptime'
192.101.11.160 | CHANGED | rc=0 >>
23:57:09 up 63 days, 2:11, 3 users, load average: 0.34, 0.38, 0.39
192.101.11.161 | CHANGED | rc=0 >>
00:00:59 up 19 days, 7:18, 3 users, load average: 0.19, 0.26, 0.26
192.101.11.159 | CHANGED | rc=0 >>
23:57:09 up 63 days, 2:11, 3 users, load average: 0.23, 0.25, 0.30
######测试所有的主机
# ./ansible all -m command -a 'uptime'
192.101.11.160 | CHANGED | rc=0 >>
23:56:00 up 63 days, 2:10, 3 users, load average: 0.62, 0.40, 0.39
192.101.11.161 | CHANGED | rc=0 >>
23:59:50 up 19 days, 7:16, 3 users, load average: 0.24, 0.29, 0.27
192.101.11.159 | CHANGED | rc=0 >>
23:56:00 up 63 days, 2:10, 3 users, load average: 0.14, 0.24, 0.30
#####查看该主机模块中所定义的主机的IP地址
# ./ansible k8s --list-hosts
# ./ansible k8s --list ##简写
-------------------------------------------------------------------------------------------------------------------------------------------------------
获取帮助信息
(http://docs.ansible.com/)
# ansible-doc -h
# ansible-doc -l
# ansible-doc -s yum ##ansible-doc 直接加模块名称,将显示该模块的描述和使用示例
ansible 命令格式:
# ansible 主机清单中IP或分组名称 -m 模块 -a "参数"
1、ansible ping 命令模块使用:
# ansible 主机清单中IP或分组名称 -m ping
# ./ansible k8s -m ping
# ./ansible k8s -m ping -v
# ./ansible k8s -m ping -vv
# ./ansible k8s -m ping -vvv
2、ansible cron 命令模块使用:
# ansible 主机清单中IP或分组名称 -m cron -a "参数"
# ./ansible 192.101.11.159 -m cron -a 'name="test cron1" job="ntpdate time1.aliyun.com" minute=0 hour=*/1' ##每小时与时钟源同步一次
##远程主机结果
# crontab -l
3、ansible copy 命令模块使用:
# ansible 主机清单中IP或分组名称 -m copy -a "参数"
# ./ansible 192.101.11.159 -m copy -a "src=/etc/hosts dest=/etc/hosts backup=yes owner=root group=root mode=644" -o
帮助文档:
https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module
主控端
被控端
# ./ansible all -m command -a 'df -h'
等同于
# ./ansible all -a 'df -h'
查看目录:
# ./ansible all -a 'ls /data'
添加用户:
# ./ansible all -a 'useradd test1'
查询用户
# ./ansible all -a 'getent passwd test1'
修改密码:
# ./ansible all -m shell -a 'test1|passwd --stdin Ycyt@14#uat'
查询密码
# ./ansible all -a 'getent shadow test1'
显示hostname
# ./ansible all -m shell -a 'echo $HOSTNAME'
查询enforce状态
# ./ansible all -a 'getenforce'
抓取文件
# ./ansible all -m fetch -a 'src=/var/log/messages dest=/data'
创建空文件f3:
# ./ansible all -m file -a 'name=/data/f3 state=touch'
删除文件f3:
# ./ansible all -m file -a 'name=/data/f3 state=absent'
创建文件夹:
# ./ansible all -m file -a 'name=/data/dir1 state=directory'
删除文件夹:
# ./ansible all -m file -a 'name=/data/f3 state=absent'
创建软连接:
# ./ansible all -m file -a 'src=/etc/fstab dest=/data/fstab.link state=link'
删除软连接:
# ./ansible all -m file -a 'dest=/data/fstab.link state=absent'
修改主机名
# ./ansible 192.101.11.159 -m hostname -a 'name=node1'
创建计划任务
# ./ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron'
查看计划任务
# crontab -e
禁用计划任务(参数job、name必须有,disabled=true或者yes;false或者no)
# ./ansible all -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'
启用计划任务(参数job、name必须有)
# ./ansible all -m cron -a 'disabled=false job="/usr/bin/wall FBI warning" name=warningcron'
删除计划任务(参数job、name必须有)
# ./ansible all -m cron -a 'job="/usr/bin/wall FBI warning" name=warningcron state=absent'
yum 管理包
安装
# ./ansible all -m yum -a 'name=httpd state=latest'
# ./ansible all -m copy -a 'src=/opt/filebeat-7.11.2-x86_64.rpm dest=/opt/'
# ./ansible all -m yum -a 'name=/opt/filebeat-7.11.2-x86_64.rpm state=latest'
卸载
# ./ansible all -m yum -a 'name=httpd state=absent'
service 管理服务
# ./ansible all -m service -a 'name=filebeat state=started enabled=yes'
user 用户管理
首先通过openssl命令来生成一个密码,因为ansible user的password参数需要接受加密后的值
# echo ansible | openssl passwd -1 -stdin
# ansible docker -m user -a 'name=ansible password="*********"' -f 10 -o
查看机器的所有facts信息
# ansible 172.17.42.107 -m setup
# ansible 172.17.42.107 -m facter
创建用户
# ./ansible all -m user -a 'name=nginx shell=/sbin/nologin system=yes home/var/nginx groups=root,bin'
删除用户
# ./ansible all -m user -a 'name=nginx state=absent remove=yes'
group 组管理
创建组
# ./ansible all -m group -a 'name=nginx system=yes'
删除组
# ./ansible all -m group -a 'name=nginx state=absent'
playbook 编写:playbook1.yml
---
- host: websrvs
remote_user: root
tasks:
- name: create new file
file: name=/data/newfile state=touch
- name: create new user
user: name=test2 systme=yes shell=/sbin/nologin
- name: install package
yum: name=httpd
- name: copy file
copy: src=/var/www/html/index.html dest=/var/www/html/
- name: start service
service: name=httpd state=started enabled=yes
# ./ansible-playbook -C playbook.yml ##检查
# ./ansible-playbook playbook.yml --list-tasks ##列出任务
# ./ansible-playbook playbook.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook playbook.yml ##执行
# ./ansible websrvs -a 'ls /data -l'
# ./ansible websrvs -a 'getent passwd test2'
# ./ansible websrvs -m shell -a 'ss -tln|grep :80'
playbook 编写:playbook2.yml
---
- host: websrvs
remote_user: root
tasks:
- name: install package
yum: name=httpd
tags: inshttpd
- name: copy file
copy: src=files/httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart service ##对应下面的handlers中的name
- name: start service
service: name=httpd state=started enabled=yes
tags: sthttpd
handlers:
- name: restart service
service: name=httpd state=restarted
# ./ansible-playbook -C playbook2.yml ##检查
# ./ansible-playbook playbook2.yml --list-tasks ##列出任务
# ./ansible-playbook playbook2.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook playbook2.yml ##执行
# ./ansible-playbook playbook2.yml --list-tags ##列出标签tags
# ./ansible-playbook -t inshttpd playbook2.yml ##执行tags指定的任务
# ./ansible-playbook -t sthttpd playbook2.yml ##执行tags指定的任务
# ./ansible-playbook -t inshttpd,sthttpd playbook2.yml ##执行tags指定的任务
playbook 编写:playbook3.yml,变量使用
---
- host: websrvs
remote_user: root
tasks:
- name: install package
yum: name={{pkgname}}
tags: inshttpd
- name: copy file
copy: src=files/httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart service ##对应下面的handlers中的name
- name: start service
service: name={{pkgname}} state=started enabled=yes
tags: sthttpd
handlers:
- name: restart service
service: name={{pkgname}} state=restarted
# ./ansible-playbook -C playbook3.yml ##检查
# ./ansible-playbook playbook3.yml --list-tasks ##列出任务
# ./ansible-playbook playbook3.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook -e 'pkgname=httpd' playbook3.yml ##执行
playbook 编写:nginx.yml,Nginx安装
---
- host: nginx
remote_user: root
tasks:
- name: install ngnix package
yum: name=nginx state=present
tags: inshttpd
- name: copy nginx.conf file
template: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s'
notify: restart nginx service ##对应下面的handlers中的name
handlers:
- name: restart nginx service
service: name=nginx state=restarted
# cat nginx.conf.j2
----------------此处省略N行------------------------
worker_processed {{ansible_processor_cores}};
----------------此处省略N行------------------------
# ./ansible-playbook -C nginx.yml ##检查
# ./ansible-playbook nginx.yml --list-tasks ##列出任务
# ./ansible-playbook nginx.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook nginx.yml ##执行
Ansible 实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,
Ansible只是提供一种框架。
Ansible 采用parmiko 协议库,通过SSH或者ZeroMQ 等连接主机。Ansible在控制主机将Ansible模块通过SSH协议推送到被管节点执行,执行完之后自动删除。
控制主机与被控节点之间支持local、SSH、ZeroMQ三种连接方式,默认使用基于SSH 的连接。
Ansible 提供了一个在线 playbook 分享平台,地址:https://galaxy.ansible.com/
二、Ansible安装
CentOS 7.0,自带python 2.7.5
1、rpm 包安装:
##安装相应的基础模块,建议使用yum直接安装
# yum install python26 python26-PyYAML python26-paramiko python26-jinja2 python-simplejson -y
# yum install -y ansible
或者如下
2、tar 包安装:
##下载ansible(http://releases.ansible.com/ansible/)可在改页面选择相应的版本进行下载
# tar -zvxf ansible-2.9.9.tar.gz
# cd ansible-2.9.9
# python setup.py build
# python setup.py install
# mkdir /etc/ansible
# cp -r examples/* /etc/ansible
# ansible --version
# ansible --help
3、设置SSH无密码登录(推荐方法)
为了避免ansible下发指令时输入被管理主机的密码,可以通过证书签名达到SSH无密码登录的效果,使用ssh-keygen产生一对密匙,使用ssh-copy-id来下发生成的公匙
关闭主机与被管理服务器的防火墙
#systemctl stop firewalld.service
# setenforce 0
setenforce: SELinux is disabled
生成密钥:
ssh-keygen -t rsa ##有询问直接按回车键即可,将在/root/.ssh/下生成一对密钥,其中id_rsa为私钥,id_rsa.pub为公钥
使用ssh-copy-id命令来复制Ansible公钥到节点,下发密钥就是控制主把公钥id_rsa.pub下发到被管节点上用户下的.ssh目录,并重命名成authorized_keys,且权限值为400。
ssh-copy-id root@节点ip
# ssh-keygen -t rsa ##生产一对密钥
# ssh-copy-id root@192.101.11.159 ##下发生产的公钥
# ssh-copy-id root@192.101.11.160 ##下发生产的公钥
# ssh-copy-id root@192.101.11.161 ##下发生产的公钥
SSH访问测试验证:
# ssh 192.101.11.159
# ssh 192.101.11.160
# ssh 192.101.11.161
4、配置文件
在运行Ansible命令时,命令将会按照预先设定的顺序查找配置文件
1)ANSIBLE_CONFIG:首先,Ansible命令会检查环境变量,及这个环境变量将指向的配置文件
2)~ /.snsible.cfg:再次,将会检查当前用户home目录下的.ansible.cfg配置文件
3)/etc/ansible/ansible.cfg:最后,将会检查在用软件包管理工具安装Ansible 时自动产生的配置文件
ansible主要相关配置文件在/etc/ansible目录下
# cd /etc/ansible/
总用量 24
-rw-r--r--. 1 root root 20269 10月 9 09:34 ansible.cfg #配置文件
-rw-r--r--. 1 root root 1016 10月 9 09:34 hosts #管控主机文件
drwxr-xr-x. 2 root root 6 10月 9 09:34 roles
# pwd
/etc/ansible
# ls
ansible.cfg hosts scripts
5、Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码、是否开启sudo认证、action_plugins插件的位置、hosts主机组的位置、是否开启log功能、默认端口、key文件位置等等,默认的都是关闭,现在需要开启remote_port和private_key_file两个配置。
Ansible命令都是并发执行的,默认的并发数目由ansible.cfg中的forks值来控制。
# vi ansible.cfg
remote_port = 22 ####用于连接远程ssh的端口
private_key_file = /root/.ssh/id_rsa_web ####第三步第一种方式使用,用于免密码登陆的
6、定义hosts主机组(被控制主机)
##ansible通过读取默认主机清单/etc/ansible/hosts文件,修改主机与组配置后,可同时连接到多个被管理主机上执行任务。具体配置如下:
# vi hosts
#[web] #被管理主机分类
#192.168.180.4
#192.168.180.5
#[db] #被管理主机分类
#192.168.180.2
[k8s] #被管理主机分类
192.101.11.159
192.101.11.160
192.101.11.161
主机清单/etc/ansible/hosts 定义模式:
[web] #被管理主机分类
192.168.180.4 ansible_ssh_pass='123456' ##定义了SSH登录密码
192.168.180.5 ansible_ssh_pass='123456' ##定义了SSH登录密码
[docker]
172.17.33.10[1:8] ## 172.17.33.101 ~ 172.17.33.108
[docker:vars]
ansible_ssh_pass='123456' ##针对docker组使用inventory内置变量定义了SSH登录密码
三、Ansible 使用
# cd /home/ansible-2.9.9/bin/
# ./ansible --version
到此,ansible的环境就部署完成了。
用来测试远程主机的运行状态
######只测试k8s组的主机
# ./ansible k8s -m ping
192.101.11.159 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.101.11.160 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.101.11.161 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on
deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
######只测试web组的主机 负载(uptime)
# ./ansible k8s -m command -a 'uptime'
192.101.11.160 | CHANGED | rc=0 >>
23:57:09 up 63 days, 2:11, 3 users, load average: 0.34, 0.38, 0.39
192.101.11.161 | CHANGED | rc=0 >>
00:00:59 up 19 days, 7:18, 3 users, load average: 0.19, 0.26, 0.26
192.101.11.159 | CHANGED | rc=0 >>
23:57:09 up 63 days, 2:11, 3 users, load average: 0.23, 0.25, 0.30
######测试所有的主机
# ./ansible all -m command -a 'uptime'
192.101.11.160 | CHANGED | rc=0 >>
23:56:00 up 63 days, 2:10, 3 users, load average: 0.62, 0.40, 0.39
192.101.11.161 | CHANGED | rc=0 >>
23:59:50 up 19 days, 7:16, 3 users, load average: 0.24, 0.29, 0.27
192.101.11.159 | CHANGED | rc=0 >>
23:56:00 up 63 days, 2:10, 3 users, load average: 0.14, 0.24, 0.30
#####查看该主机模块中所定义的主机的IP地址
# ./ansible k8s --list-hosts
# ./ansible k8s --list ##简写
-------------------------------------------------------------------------------------------------------------------------------------------------------
获取帮助信息
(http://docs.ansible.com/)
# ansible-doc -h
# ansible-doc -l
# ansible-doc -s yum ##ansible-doc 直接加模块名称,将显示该模块的描述和使用示例
ansible 命令格式:
# ansible 主机清单中IP或分组名称 -m 模块 -a "参数"
1、ansible ping 命令模块使用:
# ansible 主机清单中IP或分组名称 -m ping
# ./ansible k8s -m ping
# ./ansible k8s -m ping -v
# ./ansible k8s -m ping -vv
# ./ansible k8s -m ping -vvv
2、ansible cron 命令模块使用:
# ansible 主机清单中IP或分组名称 -m cron -a "参数"
# ./ansible 192.101.11.159 -m cron -a 'name="test cron1" job="ntpdate time1.aliyun.com" minute=0 hour=*/1' ##每小时与时钟源同步一次
##远程主机结果
# crontab -l
3、ansible copy 命令模块使用:
# ansible 主机清单中IP或分组名称 -m copy -a "参数"
# ./ansible 192.101.11.159 -m copy -a "src=/etc/hosts dest=/etc/hosts backup=yes owner=root group=root mode=644" -o
帮助文档:
https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module
主控端
被控端
# ./ansible all -m command -a 'df -h'
等同于
# ./ansible all -a 'df -h'
查看目录:
# ./ansible all -a 'ls /data'
添加用户:
# ./ansible all -a 'useradd test1'
查询用户
# ./ansible all -a 'getent passwd test1'
修改密码:
# ./ansible all -m shell -a 'test1|passwd --stdin Ycyt@14#uat'
查询密码
# ./ansible all -a 'getent shadow test1'
显示hostname
# ./ansible all -m shell -a 'echo $HOSTNAME'
查询enforce状态
# ./ansible all -a 'getenforce'
抓取文件
# ./ansible all -m fetch -a 'src=/var/log/messages dest=/data'
创建空文件f3:
# ./ansible all -m file -a 'name=/data/f3 state=touch'
删除文件f3:
# ./ansible all -m file -a 'name=/data/f3 state=absent'
创建文件夹:
# ./ansible all -m file -a 'name=/data/dir1 state=directory'
删除文件夹:
# ./ansible all -m file -a 'name=/data/f3 state=absent'
创建软连接:
# ./ansible all -m file -a 'src=/etc/fstab dest=/data/fstab.link state=link'
删除软连接:
# ./ansible all -m file -a 'dest=/data/fstab.link state=absent'
修改主机名
# ./ansible 192.101.11.159 -m hostname -a 'name=node1'
创建计划任务
# ./ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron'
查看计划任务
# crontab -e
禁用计划任务(参数job、name必须有,disabled=true或者yes;false或者no)
# ./ansible all -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'
启用计划任务(参数job、name必须有)
# ./ansible all -m cron -a 'disabled=false job="/usr/bin/wall FBI warning" name=warningcron'
删除计划任务(参数job、name必须有)
# ./ansible all -m cron -a 'job="/usr/bin/wall FBI warning" name=warningcron state=absent'
yum 管理包
安装
# ./ansible all -m yum -a 'name=httpd state=latest'
# ./ansible all -m copy -a 'src=/opt/filebeat-7.11.2-x86_64.rpm dest=/opt/'
# ./ansible all -m yum -a 'name=/opt/filebeat-7.11.2-x86_64.rpm state=latest'
卸载
# ./ansible all -m yum -a 'name=httpd state=absent'
service 管理服务
# ./ansible all -m service -a 'name=filebeat state=started enabled=yes'
user 用户管理
首先通过openssl命令来生成一个密码,因为ansible user的password参数需要接受加密后的值
# echo ansible | openssl passwd -1 -stdin
# ansible docker -m user -a 'name=ansible password="*********"' -f 10 -o
查看机器的所有facts信息
# ansible 172.17.42.107 -m setup
# ansible 172.17.42.107 -m facter
创建用户
# ./ansible all -m user -a 'name=nginx shell=/sbin/nologin system=yes home/var/nginx groups=root,bin'
删除用户
# ./ansible all -m user -a 'name=nginx state=absent remove=yes'
group 组管理
创建组
# ./ansible all -m group -a 'name=nginx system=yes'
删除组
# ./ansible all -m group -a 'name=nginx state=absent'
playbook 编写:playbook1.yml
---
- host: websrvs
remote_user: root
tasks:
- name: create new file
file: name=/data/newfile state=touch
- name: create new user
user: name=test2 systme=yes shell=/sbin/nologin
- name: install package
yum: name=httpd
- name: copy file
copy: src=/var/www/html/index.html dest=/var/www/html/
- name: start service
service: name=httpd state=started enabled=yes
# ./ansible-playbook -C playbook.yml ##检查
# ./ansible-playbook playbook.yml --list-tasks ##列出任务
# ./ansible-playbook playbook.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook playbook.yml ##执行
# ./ansible websrvs -a 'ls /data -l'
# ./ansible websrvs -a 'getent passwd test2'
# ./ansible websrvs -m shell -a 'ss -tln|grep :80'
playbook 编写:playbook2.yml
---
- host: websrvs
remote_user: root
tasks:
- name: install package
yum: name=httpd
tags: inshttpd
- name: copy file
copy: src=files/httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart service ##对应下面的handlers中的name
- name: start service
service: name=httpd state=started enabled=yes
tags: sthttpd
handlers:
- name: restart service
service: name=httpd state=restarted
# ./ansible-playbook -C playbook2.yml ##检查
# ./ansible-playbook playbook2.yml --list-tasks ##列出任务
# ./ansible-playbook playbook2.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook playbook2.yml ##执行
# ./ansible-playbook playbook2.yml --list-tags ##列出标签tags
# ./ansible-playbook -t inshttpd playbook2.yml ##执行tags指定的任务
# ./ansible-playbook -t sthttpd playbook2.yml ##执行tags指定的任务
# ./ansible-playbook -t inshttpd,sthttpd playbook2.yml ##执行tags指定的任务
playbook 编写:playbook3.yml,变量使用
---
- host: websrvs
remote_user: root
tasks:
- name: install package
yum: name={{pkgname}}
tags: inshttpd
- name: copy file
copy: src=files/httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart service ##对应下面的handlers中的name
- name: start service
service: name={{pkgname}} state=started enabled=yes
tags: sthttpd
handlers:
- name: restart service
service: name={{pkgname}} state=restarted
# ./ansible-playbook -C playbook3.yml ##检查
# ./ansible-playbook playbook3.yml --list-tasks ##列出任务
# ./ansible-playbook playbook3.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook -e 'pkgname=httpd' playbook3.yml ##执行
playbook 编写:nginx.yml,Nginx安装
---
- host: nginx
remote_user: root
tasks:
- name: install ngnix package
yum: name=nginx state=present
tags: inshttpd
- name: copy nginx.conf file
template: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s'
notify: restart nginx service ##对应下面的handlers中的name
handlers:
- name: restart nginx service
service: name=nginx state=restarted
# cat nginx.conf.j2
----------------此处省略N行------------------------
worker_processed {{ansible_processor_cores}};
----------------此处省略N行------------------------
# ./ansible-playbook -C nginx.yml ##检查
# ./ansible-playbook nginx.yml --list-tasks ##列出任务
# ./ansible-playbook nginx.yml --list-hosts ##列出运行任务主机
# ./ansible-playbook nginx.yml ##执行
发表评论
-
HTTPS的加密原理解读
2021-12-31 11:25 200一、为什么需要加密? 因为http的内容是明文传输的,明文数据 ... -
容器技术的基石: cgroup、namespace和联合文件系统
2021-12-09 10:47 542Docker 是基于 Linux Kernel 的 Names ... -
链路追踪skywalking安装部署
2021-10-21 12:06 671APM 安装部署: 一、下载 版本目录地址:http://a ... -
Linux 下 Kafka Cluster 搭建
2021-07-08 11:23 860概述 http://kafka.apachecn.org/q ... -
ELK RPM 安装配置
2021-06-22 18:59 494相关组件: 1)filebeat。用于收集日志组件,经测试其 ... -
在Kubernetes上部署 Redis 三主三从 集群
2021-03-10 16:25 487NFS搭建见: Linux NFS搭建与配置(https:// ... -
docker-compose 部署ELK(logstash->elasticsearch->kibana)
2020-11-11 18:02 1370概述: ELK是三个开源软件的缩写,分别表示:elastic ... -
Kubernetes1.16.3下部署node-exporter+alertmanager+prometheus+grafana 监控系统
2020-10-28 10:48 896准备工作 建议将所有的yaml文件存在如下目录: # mkd ... -
Linux NFS 搭建与配置
2020-10-21 17:58 319一、NFS 介绍 NFS 是 Network FileSys ... -
K8S 备份及升级
2020-10-20 15:48 737一、准备工作 查看集群版本: # kubectl get no ... -
API 网关 kong 的 konga 配置使用
2020-09-23 10:46 3518一、Kong 概述: kong的 ... -
云原生技术 Docker、K8S
2020-09-02 16:53 461容器的三大好处 1.资源 ... -
Kubernetes 应用编排、管理与运维
2020-08-24 16:40 465一、kubectl 运维命令 kubectl control ... -
API 网关 kong/konga 安装部署
2020-08-25 17:34 433一、概述 Kong是Mashape开 ... -
Linux 下 Redis Cluster 搭建
2020-08-13 09:14 535Redis集群演变过程: 单 ... -
Kubernetes离线安装的本地yum源构建
2020-08-08 22:41 383一、需求场景 在K8S的使用过程中有时候会遇到在一些无法上网 ... -
Kubernetes 证书延期
2020-08-01 22:28 327一、概述 kubeadm 是 kubernetes 提供的一 ... -
kubeadm方式部署安装kubernetes
2020-07-29 08:01 2025一、前提准备: 0、升级更新系统(切记升级一下,曾被坑过) ... -
Kubernetes 部署 Nginx 集群
2020-07-20 09:32 654一.设置标签 为了保证nginx之能分配到nginx服务器需要 ... -
Prometheus 外部监控 Kubernetes 集群
2020-07-10 15:59 1807大多情况都是将 Prometheus 通过 yaml 安装在 ...
相关推荐
自动化运维工具Ansible详细部署
自动化运维工具Ansible详细部署
自动化运维工具Ansible详细部署,本人亲身经验传授,一招让你熟悉ansible的使用。
ansible自动化运维课程ppt,主要讲解ansible部署/安装以及在自动化运维中的应用
本书由一线运维人员联手打造,通过大量实例,详细讲解Ansible这个工具的自动化运维方式与技巧;从基础的架构解析、安装配置,到典型应用案例分析,作者分享了自己在工作中的实战经验,为各类开发运维人员提供了详实...
Ansible是2013年推出的一款IT自动化和DevOps软件,2015年被RedHat收购,基于Python语言开发,可实现批量操作系统配置、批量部署、批量运行命令等功能。只需要SSh和Python即可使用,无客户端,功能强大,模块丰富。
运维工具ansible jenkins mesos三种工具讲解,部署、实验、测试、截图
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
//
//
linux系统服务器详细的ansible自动化运维工具离线安装部署工具,小白看了都会
Ansible-Tower自动化运维管理
基于Ansible自动化运维系统批量部署LAMP架构的设计与实现.pdf
基于Ansible自动化运维系统批量部署LAMP架构的设计与实现.rar
本文档在CentOS 7上安装最新版本Ansible AWX 20.1.1自动化运维管理系统,当前网络中均是老版本的安装配置资料,和最新版本基本没有什么参考价值,githup的介绍确实理解起来非常晦涩,在通过探索终于可以完成了一个...
Ansible自动化运维参考实验手册-附带自动化部署zabbix和prometheus
提高list规则文件DIY程度,减少新增服务带来的修改代码,实现扫描list自动化安装部署。(配置、与监控属于业务范围,还需手动修改。) 完善回滚机制,可根据时间段进行回滚,实现即时回滚即时使用。 1 引言 自动化...
自动化部署与统一安装升级 - 类ansible工具 unifyDeploy0.3版本发布 (更新时间2014-12-24) http://www.cnblogs.com/Javame/p/3835575.html 新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一...
Ansible自动化运维体系在生产环境部署实践.docx