未命名
inventory 处理
class Runner(object):
def __init__(self,
host_list=C.DEFAULT_HOST_LIST, # ex: /etc/ansible/hosts, legacy usage
)
self.inventory = utils.default(inventory, lambda: ansible.inventory.Inventory(host_list))
utils 中
def default(value, function):
‘’’ syntactic sugar around lazy evaluation of defaults ‘’’
if value is None:
return function()
return value
如果 inventory 存在,就使用inventory变量里面的,如果没有,就调用哪个ansible.inventory.Inventory 函数。
ansible 结构
inventory 目录中 ini.py 是解析 ini文件
script.py 是解析 可执行文件
如果是str 比如: “/etc/ansible/hosts” 进入 ini.py 文件
class InventoryParser(object) 类
def _parse(self):
self._parse_base_groups()
self._parse_group_children()
self._parse_group_variables()
return self.groups
解析后返回 三个对象
{‘ungrouped’:
就是,无分组 ,分组 ,all
{‘127.0.0.1’:
最后得到
self.parser = InventoryParser(filename=host_list)
self.groups = self.parser.groups.values()
print self.parser.hosts
{‘127.0.0.1’:
print self.parser.groups
{‘ungrouped’:
未命名
git flow 工作流的使用
安装gitflow
sudo dnf install gitflow
把已有仓库 初始化为 gitflow仓库
$ cd project_dir
$ git flow init
$ git branch
- develop
master
创建 Feature
$ git flow feature start authentication
$ git flow feature finish authentication
Versioned releases
$ git flow release start 0.1.0
$ git flow release finish 0.1.0
Hotfixing production code
$ git flow hotfix start assets
$ git flow hotfix finish assets
未命名
http://www.jianshu.com/p/7a0d6917e009
https://www.gitlab.cc/downloads/
gitlab地址:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.14.1-ce.1.el7.x86_64.rpm
安装:
$ rpm -ivh gitlab-ce-8.14.1-ce.1.el7.x86_64.rpm
初始化 GitLab
sudo gitlab-ctl reconfigure
修改host
添加访问的 host,修改/etc/gitlab/gitlab.rb的external_url
external_url ‘http://git.home.com‘
vi /etc/hosts,添加 host 映射
127.0.0.1 git.home.com
每次修改/etc/gitlab/gitlab.rb,都要运行以下命令,让配置生效
sudo gitlab-ctl reconfigure
配置本机的 host,如:192.168.113.59 git.home.com。最后,在浏览器打开网址http://git.home.com,登陆。默认管理员:
用户名: root
密码: 5iveL!fe
下载汉化包后上传服务器后解压。下载链接
停止Gitlab服务。
sudo gitlab-ctl stop
备份服务器上的/opt/gitlab/embedded/service/gitlab-rails目录。 注:该目录下的内容主要是web应用部分,也是当前项目仓库的起始版本,也是汉化包要覆盖的目录。
将解压后的汉化包覆盖服务器上的/opt/gitlab/embedded/service/gitlab-rails目录。
启动Gitlab服务。
sudo gitlab-ctl start
重新执行配置命令。
sudo gitlab-ctl reconfigure
完成上述步骤即实现汉化。
未命名
ansible 报错处理
今天运行ansible的时候报错
执行
TASK [common : unarchive jdk-8u60-linux-x64.tar.gz to /opt/fonsview/3RD] *
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: MemoryError
fatal: [172.16.6.86]: FAILED! => {“failed”: true, “msg”: “Unexpected failure during module execution.”, “stdout”: “”}
to retry, use: –limit @/etc/ansible/sites/epg/src/install_epg.retry报错类型 The error was: MemoryError
我运行的解压命令 unarchive 其实是 先把主机 copy到远程,然后解压
ansible 2.2.0 copy模块有个bug,当copy 大文件时 会报 MemoryError
主要原因是,可用内存 必须 大于 要copy的单个报的大小
我的问题是,我的主机可用内存是150mb,而我copy的 jdk-8u60-linux-x64.tar.gz包 是173MB,
所以内存不够,就报错 The error was: MemoryError
- 解决方法,释放自己的内存,使可用内存大于 173MB 问题解决
未命名
scrapy 的使用
- items.py 内容储存方式
- pipelines.py 流程
- setting.py 设定
安装
pip install scrapy
创建一个项目
scrapy startproject tutorial
➜ tree
.
├── scrapy.cfg
└── tutorial
├── init.py
├── items.py
├── pipelines.py
├── settings.py
└── spiders
└── init.py
2 directories, 6 files
运行一个项目
cd tutorial/
vim tutorial/spiders/quotes_spider.py
列出 可用 spider
scrapy list运行
scrapy crawl quotes
Selectors选择器简介
XPath表达式的例子及对应的含义:
/html/head/title: 选择HTML文档中
标签内的/html/head/title/text(): 选择上面提到的
//td: 选择所有的
//div[@class=”mine”]: 选择所有具有 class=”mine” 属性的 div 元素
response.xpath(‘//base/@href’).extract()
[u’http://example.com/‘]response.css(‘base::attr(href)’).extract()
[u’http://example.com/‘]
@符号代表 属性
映射:
response.selector.xpath() –》 response.xpath()
response.selector.css() –》 response.css()
demo
- shell 调试
scrapy shell “http://quotes.toscrape.com/page/1/“
自动 会把页面返回放到 response 类中
- response.body
支持 js scrapy-splash
- 安装
pip install scrapy-splash
未命名
wireshark 的使用
安装
dnf install wireshark
dnf install wireshark-gtk.x86_64
给用户赋予 权限
usermod -a -G wireshark monkey给抓取网卡的权限
setcap ‘CAP_NET_RAW+eip CAP_NET_ADMIN+eip’ /usr/sbin/dumpcap
使用
未命名
未命名
如果大家在使用 虚拟主机的过程中
根分区 空间不够,使用如下方法 可以给根分区扩充50G
注:扩充过程中数据不会有任何损坏
把空闲磁盘 vdb 转换为物理卷(如果没有vdb,请联系管理人员添加磁盘)
[root@fonsview ~]#pvcreate /dev/vdb把/dev/vdb 添加到卷组 VolGroup00中
[root@fonsview ~]#vgextend VolGroup00 /dev/vdb扩充根逻辑卷VolGroup00-LogVol00 并把文件系统增大50G
[root@fonsview ~]#lvresize –resizefs –size +50GB /dev/mapper/VolGroup00-LogVol00
名词解释:
空闲磁盘的意思是 没有分区 没有挂载 没有使用
未命名
pycharm的使用
- 快捷键
Alt + F 快速新建文件
Ctrl + Alt + T 插入 判断等 (自动创建注释等)
Shift + F10 是运行程序
shift + F9 调试运行
F9 移动到下一个断点
F8 步进调试
Alt + Shift + E 执行选中的代码
- 指定一个定时器
打开 setting -> Tools -> Python Integrated Tools
学 Default test runner -> Nosetests
- 可以给代码设置断点
右键断点处,可以给断点修改断点属性
condition 给断点加条件
- 当需要输入HTML类型标签时,PyCharm同样设计了帮助系统:
Ctrl+Space调用拼写提示功能。
当输入一个括号时,会自动生成另一个括号以进行匹配
pycharm 的database 可以直接连接 数据库 很方便
自动导入
比如写 time.sleep(10) 时忘记先import time 的话,可以Alt + Enter 自动导入
- file watcher 监控文件的改变
如果文件发生改变 就调用指定的命令
- file watcher 监控文件的改变
使用场景:
index.jade 如果改变 调用pyjade 生成对应的jinja或html页面
index.less 如果改变 调用less 生成对应的css文件
- 创建便签注释