Ansible 独孤九式
Posted 运维入门时间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible 独孤九式相关的知识,希望对你有一定的参考价值。
1、前提
ansible是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具Chef,Puppet,Saltstack。
2、实现功能
自动化部署应用
自动化管理配置
自动化的持续交付
自动化的(AWS)云服务管理。
3、业界产品对比
工具 |
语言 |
架构 |
协议 |
Puppet |
Ruby |
C/S |
HTTP |
Chef |
Ruby |
C/S |
HTTP |
Ansible |
Python |
无Client |
SSH |
Saltstack |
Python |
C/S(可无Client) |
SSH/ZMQ/RAET |
总结
python 入门速度快 有C/S模式支持异步 无client不能使用队列。
所以笔者个人认为 ansible 场景只适合小而美的场景!当然最近有也说Ansible 要出现C/S支持异步操作
4、如何安装ansible?
4.1 yum安装(CentOS/Redhat)
yum install http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install ansible
4.2 apt-get安装(ubuntu)
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
5、ansible架构图
5.1 ansible-doc [模块名]
该命令就能列出 cron如何使用 帮助文档
ansible-doc -s cron
6、ansible 命令
ansible
#--- 单命令执行 ansible----
ansible-doc
# ----- 主要帮助文档----
ansible-playbook
# 自定义组合ansible 流程化执行ansible
ansible—galaxy
ansible-lint
ansible-pull
ansible-vault
7、Inventory Patterns
7.1 ansible 两个主要配置 文件
/etc/ansible/ansible.cfg
/etc/ansible/hosts
7.1.1 /etc/ansible/ansible.cfg
[defaults]
# hostfile = /etc/ansible/hosts
library = /usr/share/ansible
remote_tmp = $HOME/.ansible/tmp
pattern = *
forks = 5
poll_interval = 15
# sudo_user = ansible
sudo_user = root
# ask_sudo_pass = True
# ask_pass = True
transport = smart
remote_port = 22
remote_user = manage
module_lang = C
deprecation_warnings=False
7.1.2 /etc/ansible/hosts
[icp]
10.168.89.200
[mall]
10.251.255.221
[toc]
10.117.36.222
例:[toc] 代表这着组 批量调度的时候引用
8、ansible module
例:AD-HOC
ansible 主机或组 -m 模块名 -a '模块参数' ansible参数
8.1 commands类
1、command
2、shell
3、raw
4、script
归纳上面的几个命令的特点
raw 模块执行bash的结果在家目录
command 模块不支持管道
Script 模块输出的结果很让人心碎
shell很多地方和RAW类似,更多的地方建议使用shell和command模块。
但是如果是使用老版本python,需要用到raw,又或者是客户端是路由器
因为没有安装python模块,那就需要使用raw模块
8.2 ‘正确’的打开方式
command模块 [执行远程命令]
ansible huaishuo -m command -a 'uname -n'
script模块 [在远程主机执行主控端的shell/python脚本 ] (使用相对路径)
ansible huaishuo -m script -a '/tmp/hello.py'
shell模块 [执行远程主机的shell/python脚本 支持管道新版本支持通配符 元字符]
ansible huaishuo -m shell -a 'ls /tmp/huaishuo/{a1,a2}/*.log’
raw模块 [类似于command模块、支持管道传递 支持通配符 元字符]
ansible huaishuo -m raw -a "ifconfig eth0 |sed -n 2p |awk '{print \$2 }'"
9、Module
ping
yum
setup
service
file
copy
cron
user_group
mount
get_url
fetch
9.1 常用的命令使用
service:
ansible huaishuo -a 'chkconfig --list'
ansible huaishuo -m service -a 'enabled=true name=httpd state=started'
ansible huaishuo -a 'chkconfig --list'
ansible huaishuo -a 'service httpd status'
cron:
ansible huaishuo -m cron -a 'minute="*/10" hour="0,2,3,4" job="/bin/echo hello ansible" name="test"'
user:
ansible huaishuo -m user -a "name=huaishuo password='123456'";
copy:
ansible huaishuo -m copy -a "src=/tmp/www/ dest=/tmp/www"
fetch
ansible huaishuo -m copy -a "src=/tmp/aaa.txt dest=/data/file/ flat=yes"
yum:
ansible huaishuo -m yum -a "name=git state=latest"
ansible huaishuo -m yum -a "name=git state=absent"
9.2 更多模块
超级全的模块类型及分类
https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
官网
https://www.ansible.com
9.3 ansible-playbook setup_node_vpc.yml
- hosts: jichu ###### 执行组
remote_user: manage ###### 用哪个用户运行
gather_facts: True ######
tasks: ###### 任务开启
- name: create dir
shell: mkdir -p /usr/local/services/prometheus_exporters
- name: scp
copy: src=/alidata/ansible_yaml/node_exporter-0.14.0.linux-amd64.tar.gz dest=/usr/local/services/prometheus_exporters/node_exporter-0.14.0.linux-amd64.tar.gz owner=root
- name: unarchive
unarchive: src=/alidata/ansible_yaml/node_exporter-0.14.0.linux-amd64.tar.gz dest=/usr/local/services/prometheus_exporters
- name: run node_exporter
shell: nohup /usr/local/services/prometheus_exporters/node_exporter-0.14.0.linux-amd64/node_exporter &
分别执行下面三个命令
1、create 目录
2、从ansible服务器 复制文件给 目标机器
3、在目标机器解压
4、在目标机器执行命令
ps
另外推荐一下界面化ansible_tower
以上是关于Ansible 独孤九式的主要内容,如果未能解决你的问题,请参考以下文章