一.YAML-YAML Ain’t Markup Language-非标记语言
1.语法:
列表
fruits:
- Apple
- Orange
- Strawberry
- Mango
字典
martin:
name: Martin D'vloper
job: Developer
skill: Elite
2.示例:
需求:通过YAML编写一个简单的剧本,完成web的部署,配置,启动的全过程。
ansible服务器
准备工作
ansible all -m yum -a 'name=httpd state=removed' -o
清理一下环境
yum install -y httpd
准备配置文件
mkdir apache
cd apache
cp -rf /etc/httpd/conf/httpd.conf .
grep '^Listen' httpd.conf
Listen 8080
修改配置,用作推送
编写剧本
vim apache.yaml
- hosts: webserver
tasks:
- name: install apache packages
yum: name=httpd state=present
- name: copy apache conf
copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf
- name: ensure apache is running
service: name=httpd state=started enabled=yes
测试:
ansible-playbook apache.yaml --syntax-check
检验语法
ansible-playbook apache.yaml --list-tasks
列出任务
ansible-playbook apache.yaml --list-hosts
列出主机
ansible-playbook apache.yaml
执行
http://192.168.152.182:8080/
注意端口
如果配置文件发生变化。 Listen 9090
ansible-playbook apache.yaml
再次执行,命令成功,但配置未生效,所以要增加处理程序。设置触发器
如果配置文件再发生变化。 Listen 9080
ansible-playbook apache.yaml 再次执行,配置生效,触发成功
二.Role-角色扮演
简介:roles则是在ansible中,playbooks的目录组织结构。将代码或文件进行模块化,成为roles的文件目录组织结构,易读,代码可重用,层次清晰。
目标:通过role远程部署nginx并配置
1.目录结构
准备目录结构
mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p
touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml
echo 1234 > roles/nginx/files/index.html
yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2
nginx 角色名
files 普通文件
handlers 触发器程序
tasks 主任务
templates 金甲模板(有变量的文件)
vars 自定义变量
2.编写任务
vim roles/nginx/tasks/main.yaml
---
- name: install epel-release packge
yum: name=epel-release state=latest
- name: install nginx packge
yum: name=nginx state=latest
- name: copy index.html
copy: src=index.html dest=/usr/share/nginx/html/index.html
- name: copy nginx.conf template
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: make sure nginx service running
service: name=nginx state=started enabled=yes
对迭代项的引用,固定变量名为"item”,使用with_item属性给定要迭代的元素;
3.准备配置文件
vim roles/nginx/templates/nginx.conf.j2
worker_processes {{ ansible_processor_cores }};
调用内部已知变量
worker_connections {{ worker_connections }};
自定义变量
4.编写变量
vim roles/nginx/vars/main.yaml
5.编写处理程序
vim roles/nginx/handlers/main.yaml
6.编写剧本
vim roles/site.yaml
7.实施
cd roles 切换路径
ansible-playbook site.yaml --syntax-check 测试
ansible-playbook site.yaml 执行剧本
验证
三.扩展知识
了解行业背景知识
==采购服务器并托管==
- 了解DELL常见服务器的价格、型号、配置(CPU,内存、硬盘、支持的RAID功能)(3款)
- 了解HP常见服务器的价格、型号、配置(CPU,内存、硬盘、支持的RAID功能)(3款)
- 了解常见的硬盘接口类型、速率、价格如:ATA, SATA, SCSI, SAS, FC(3款)
- 了解国内主要是北京托管商的信息如:厂商名称、托管的价格、地理位置(光环新网/世纪互联)(3家)
==云主机==
- 了解青云qingcloud.com如价格、基本部署
- 了解阿里云价格、基本部署
- 了解阿亚马逊云价格、基本部署
- 了解腾讯云价格、基本部署
==DNS 解析==
- 了解国内主要的DNS ISP如万网、新网、DNSPOD、阿里DNS
- 申请自己的域名,学习在DNS管理界面上添加各种记录
==CDN 技术==
1.了解国内主要的3家CDN ISP,对比其价格、性能、市场的占有率等
2.了解主要CDN购买及使用方式
3.了解反向代理技术Varnish原理及部署
4.查看126.com,sina.com, baidu.com使用的代理机制
[root@tianyun ~]# curl -I http http://www.126.com
DELL R730
戴尔PowerEdge R730 机架式服务器(Xeon E5-2603 V3/8GB/1.2TB)
所属:
戴尔 PowerEdge R730 机架式
产品类别:机架式
CPU型号:Xeon E5-2603 v3 1.6GHz
标配CPU数量:1颗
内存容量:8GB DDR4
标配硬盘容量:1.2TB
内部硬盘架数:最大支持16块2.5英寸硬盘-使用1.2TB热插拔SAS硬盘最高可配19.2TB
网络控制器:四端口千兆网
¥1.18万 2019-02-07
DELL R740
戴尔PowerEdge R740 机架式服务器(R740-A420805CN)
所属:
戴尔 PowerEdge R740 机架式
产品类别:机架式
CPU型号:Xeon Bronze 3104 1.7GHz
标配CPU数量:1颗
内存容量:8GB DDR4
标配硬盘容量:600GB*2
内部硬盘架数:前置硬盘托架: 高达16×2.5"SAS/SATA/SSD,最大60TB 高达8×3.5"SAS/SATA,最大80TB
网络控制器:QLogic FastL
¥1.84万 2019-02-07
DELL R940
戴尔PowerEdge R940 机架式服务器(R940-A420813CN)
所属:
戴尔 PowerEdge R940 机架式
产品类别:机架式
CPU型号:Xeon Gold 5120 2.2GHz
标配CPU数量:2颗
内存容量:32GB DDR4
标配硬盘容量:1.2TB
内部硬盘架数:最大支持8块2.5英寸硬盘
网络控制器:Broadcom 572
¥8.82万 2019-02-07
服务器托管费用示例
服务器托管的收费依据,服务器托管按照空间大小、电量消耗、以及带宽大小、IP数量还有机房等级来确定收费的。一般来说最低的托管配置是:
托管规格:1U
机柜功率:1A/220V
带宽:10M独享
IP地址:1个
电力:1A
网络线路:BGP线路
这个配置的托管,目前九河互联深圳数据中心月付是699元,年付6999元。在国内这个价格算是非常便宜的了,当然更重要的是上述网络是阿里云BGP,稳定性和性价比都非常优越。
百度云CDN计费标准
百度云CDN计费标准
按使用流量计费:CDN内容分发是按下行流量计费方式,是一种后付费模式;用户可以按照时间使用的流量付费,也可以通过购买流量包来抵扣;
按日峰值带宽计费:日峰值计费模式不限流量,日峰值带宽是指CDN每天的最高峰值,按照当天的最高CDN峰值计费,默认日峰值带宽上限是100Gbps;
注意:CDN按日峰值带宽计费和按流量计费可以相互切换,提交切换申请后,在第二日零点生效。用户可以根据自身的实际情况选择最优的付费模式,例如:平时流量较少的用户可以选择按流量计费。
一:按使用流量计费价格表
流量阶梯 折扣价(元/GB)
0GB-10TB(含) 0.20
10TB-50TB(含) 0.17
50TB-100TB(含) 0.14
100TB-1PB(含) 0.12
大于1PB 0.10
举例说明:
如累计消耗流量为10300GB,则其中10000G属于0GB–10TB阶梯内,单价为0.20元/GB。剩下的300G在10TB-50TB阶梯内,则单价为0.17元/GB。则总账单金额为10000GB ∗ 0.20元/GB+300GB ∗ 0.17元/GB=2051元。
当然,用户也可以通过购买流量包的形式来抵扣CDN所产生的流量,流量包计费说明参考:百度云CDN流量包收费价格表
二:按日峰值带宽计费
规格 单价(元/Mbps/日)
0~500Mbps(含) 0.52
500Mbps-5Gbps(含) 0.51
5Gbps-20Gbps(含) 0.48
大于20Gbps 0.47
举例说明:
用户当日的峰值带宽为912Mbps,则用户的账单费用应为912 ∗ 0.51元=465.12元。
如何在ansible中,使用不同的用户登录不同的主机?
在主机清单里设置
[webservers`]
asdf.example.com ansible_port=5000 ansible_user=alice ansible_pass=123456
jkl.example.com ansible_port=5001 ansible_user=bob ansible_pass=654321
判断主机地址为10.18.46.37的主机。关闭该主机
- hosts: webserver
tasks:
- name: "shut down 10.18.46.37 systems"
command: /usr/sbin/init 0
when: ansible_all_ipv4_addresses == "10.18.46.37"
关闭两台呢?
- hosts: webserver
tasks:
- name: "shut down 10.18.46.37 systems"
command: /usr/sbin/init 0
when: (ansible_all_ipv4_addresses == "10.18.46.37") or(ansible_all_ipv4_addresses == "10.18.46.47")
循环创建多个用户
- hosts: host2
tasks:
- name: add several users
user: name={{ item }} state=present groups=wheel
with_items:
- testuser1
- testuser2
如何加密hosts主机清单文件
cat hosts2
wali ansible_ssh_host=10.0.0.1 ansible_ssh_port=14573
ansible -i /etc/ansible/hosts2 all -m shell -a "uptime"
设定密码加密主机清单
ansible-vault encrypt /etc/ansible/hosts2
输入密码编辑主机清单
ansible-vault edit /etc/ansible/hosts2
输入密码才能执行
ansible -i /etc/ansible/hosts2 all -m ping --ask-vault-pass