Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | Github | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

Netkiller DevOps 手札

Software engineering platform, Integrated SCM & Project Management, Version Control System,Continuous Integration & Delivery

《Netkiller DevOps 手札》视频教程

Mr. Neo Chan, 陈景峯(BG7NYT)



中国广东省深圳市望海路半岛城邦三期
518067
+86 13113668890


$Date: 2013-04-10 15:03:49 +0800 (Wed, 10 Apr 2013) $

2009-12-12

电子书最近一次更新于 2022-10-20 16:52:03

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信公众号: netkiller
微信:13113668890 请注明“读者”
QQ:13721218 请注明“读者”
QQ群:128659835 请注明“读者”
知乎专栏 | 多维度架构

致读者

Netkiller 系列手札 已经被 Github 收录,并备份保存在北极地下250米深的代码库中,备份会保留1000年。

Preserving open source software for future generations

The world is powered by open source software. It is a hidden cornerstone of modern civilization, and the shared heritage of all humanity.

The GitHub Arctic Code Vault is a data repository preserved in the Arctic World Archive (AWA), a very-long-term archival facility 250 meters deep in the permafrost of an Arctic mountain.

We are collaborating with the Bodleian Library in Oxford, the Bibliotheca Alexandrina in Egypt, and Stanford Libraries in California to store copies of 17,000 of GitHub’s most popular and most-depended-upon projects—open source’s “greatest hits”—in their archives, in museum-quality cases, to preserve them for future generations.

https://archiveprogram.github.com/arctic-vault/

目录

1. 自述
1.1. 写给读者
1.2. 作者简介
1.3. 如何获得文档
1.4. 打赏(Donations)
1.5. 联系方式
I. 软件项目管理
1. 范围管理
1.1. 宏观管理
1.2. 你清楚你的工作职责吗?
1.2.1. 制度管理
1.2.2. 权力下放
1.2.3. 专业的人做专业的事
1.2.4. 总结
1.3. 怎样防止踢皮球
1.3.1. 进入正题
1.3.2. 踢皮球几大害处
1.3.3. 场景一
1.3.4. 场景二
1.3.5. 踢皮球的风气是怎样形成的?
1.3.5.1. 技术人员的单一视角
1.3.5.2. 责任不明确
1.3.5.3. 缺乏沟通
1.3.5.4. 背黑锅
1.3.5.5. 员工问题
1.3.6. 怎样根治踢皮球
1.3.6.1. 调整组织架构
1.3.6.2. 禁止追查问题源头
1.3.6.3. 不懂技术的管理
1.3.6.4. 统一目标,价值观。
1.3.6.5. 防止问题扩大
1.4. 内部外包与悬赏
1.4.1. 怎么样操作
1.4.2. 可能遇到的问题
1.4.3. 小结
1.5. 团队膨胀的原因分析
1.5.1. 人才管理
1.5.1.1. 先从员工个人谈起
1.5.1.2. 技能管理
1.5.2. 再说说部门
1.5.2.1. 部门膨胀
1.5.3. 精细化管理带来的膨胀
2. 时间管理
2.1. 优先级管理
2.2. 时间管理的误区
2.2.1. 优化组织架构,精简机构
2.2.2. 命令决策一元化
2.2.3. 时间线
2.3. 项目管理中工时计算的问题
2.3.1. 背景
2.3.2. 面临的问题
2.3.3. 工时去了哪里?
2.3.3.1. 洗手间,茶水间,吸烟
2.3.3.2. 看邮件,写邮件
2.3.3.3. 沟通
2.3.3.4. 查资料
2.3.3.5. 无关的会议
2.3.3.6. 不必要的拖延行为
2.3.3.7. 私人时间
2.3.4. 怎样改善面临的问题
2.3.5. 怎样计算项目工时?
2.4. 项目延期
2.5. 当日事当日毕
2.5.1. 工作时间如何规划?
2.5.2. 遇到工作被打断的情况
3. 沟通管理(Communication Management)
3.1. 表达方式
3.1.1. 如何提问
3.1.2. 拒绝反问和质问
3.1.3. 宽以律己,严以待人
3.1.4. 任务分配
3.1.5. 任务确认
3.2. 会议管理
3.2.1. 什么要开会?
3.2.2. 会议的时间成本
3.2.3. 集思广益纯属扯淡
3.2.4. 会议冲突
3.2.5. 避免议而不决
3.2.6. 会议记录
3.2.7. 会议地点
3.2.8. 与会人员
3.2.9. 怎样管理会议的时间呢?
3.3. 工作报告
3.3.1. 日报、周报,项目进度汇报
3.3.2. 为什么会出现频繁汇报?
3.3.3. 如何才能抛弃汇报制度?
3.4. 越级和跨部门沟通
3.5. 负面信息处理
4. 变更管理(Change Management)
4.1. 什么是变更管理
4.2. 需求变更
4.2.1. 为什么会变更
4.3. 拥抱变更
5. 集成管理
5.1. 配置管理
5.2. 为什么持续集成难以普及
6. 质量管理
6.1. 无缺点管理
6.2. 自动化测试如何破局?
6.2.1. 认知问题
6.2.2. 生态的问题
6.2.3. 技术的问题
6.2.4. 能力问题
6.2.5. 氛围问题
6.2.6. 最后
6.3. 为什么自动化测试难以推广
6.3.1. 为什么自动化测试难以实施
6.3.2. 是什么阻碍了自动化测试?
6.3.3. 中国测试人员的人力成本
7. 风险管理
7.1. 项目管理绕不开问题
7.1.1. 开发,测试与运维的关系
7.1.2. 压力问题
7.1.3. 重速度轻安全
7.1.4. 技术实力
7.1.5. 测试问题
7.1.6. 运维问题
7.2. 程序猿说的「优化」是什么意思?
7.2.1. 经验和能力不足
7.2.2. 给前人擦屁股
7.2.3. 先盖楼,后打地基
7.2.4. 使用新技术和不熟悉的技术
7.2.5. 最后总结
7.3. 制度、流程和规范的误区
7.3.1. 故事一
7.3.2. 故事二
7.3.3. 故事三
7.3.4. 故事四
7.3.5. 故事五
7.3.6. 总结
7.3.7. 案例分析:怎样避免电梯伤人事件再发生
7.4. 因果图在运维工作中的应用
7.4.1. 故障树分析(Fault Tree Analysis,FTA)
7.4.2. 什么是因果图
7.4.3. 为什么使用因果图
7.4.4. 何时使用因果图
7.4.5. 何处使用因果图
7.4.6. 谁来负责制作因果图
7.4.7. 怎样使用因果图
7.4.7.1. www.example.com, img.example.com
7.4.7.2. acc.example.com, api.example.com
7.4.7.3. cch.exampel.com, mq.exampe.com, db.example.com
7.5. Incident Management(突发事件管理)
7.5.1. 突发事件处理流程
7.5.2. 事件处理方式
7.6. 监控的艺术
7.6.1. 背景
7.6.2. 概述
7.6.3. 怎样监控
7.6.3.1. 卫星监测
7.6.3.2. 逐级诊断
7.6.3.3. 模拟人工
7.6.3.4. 数据分析
7.6.3.5. 监控与开发
7.6.4. 总结
8. 成本管理
8.1. 警惕IT黑洞
8.1.1. 什么是IT黑洞
8.1.2. IT黑洞产生的原因分析
8.1.2.1. 人的因素
8.1.2.2. 来自组织架构的问题
9. 人力资源管理
9.1. 面试流程
9.2. 技术面试
9.3. 网络工程师面试题
9.3.1. Junior
9.3.2. Senior Network Engineer 高级网络工程师
9.4. 运维工程师面试题
9.4.1. Junior
9.4.2. 高级运维工程师
9.5. 软件工程师面试题
9.5.1. Junior Software Engineer
9.5.2. Senior Software Engineer
9.6. 架构师面试题
9.7. 数据库管理员
9.8. 测试工程师
10. 采购管理
II. 项目管理工具
11. Gitlab 项目管理
11.1. GitLab 安装与配置
11.1.1. Almalinux 9.0
11.1.1.1. Gitlab Runner
11.1.2. CentOS 8 Stream 安装 Gitlab
11.1.3. Docker 方式安装 Gitlab
11.1.3.1. Docker 运行
11.1.3.2. Docker compose 安装 Gitlab
11.1.3.3. Docker Compose 安装 gitlab-runner
11.1.4. Yum 安装 GitLab
11.1.4.1. GitLab Runner
11.1.5. 绑定SSL证书
11.1.6. Gitlab 管理
11.1.6.1. gitlab-rake 命令
11.1.6.2. gitlab-runner 命令
11.1.6.3. Gitlab 迁移,备份和恢复
11.2. 初始化 Gitlab
11.2.1. 操作系统初始化
11.2.1.1. gitlab-runner
11.2.1.2. Docker
11.2.1.3. Java 环境 安装脚本
11.2.1.4. Node 环境
11.2.2. 创建用户
11.2.2.1. 创建用户
11.2.3. 初始化组
11.2.4. 初始化标签
11.2.5. 初始化分支
11.2.6. 部署环境
11.3. 项目管理
11.3.1. 组织架构
11.3.1.1. 开发、测试和运维三个部门的关系
11.3.1.2. 权限角色
11.3.2. 项目计划
11.3.3. 工作流
11.3.4. 议题
11.3.4.1. Milestones 里程碑
11.3.4.2. 修正路线图(Roadmap)
11.3.4.3. 工作报告
11.3.4.4. 5W2H 任务分配法则
11.3.4.5. 任务/议题
11.3.5. 并行开发
11.3.5.1. 任务分解
11.3.5.2. 配套环境
11.3.5.3. 代码分支
11.3.5.4. 前滚和后滚
11.3.5.5. 提交代码怎样写注释信息
11.3.6. 升级与发布相关
11.3.6.1. 分支与版本的关系
11.3.6.2. 分支与标签的区别
11.3.6.3. Release Notes
11.3.6.4. License
11.3.7. 代码审查
11.3.7.1.
11.4. 通过GPG签名提交代码
11.4.1. 创建证书
11.4.2. 配置 Gitlab GPG
11.4.3. 配置 Git
11.4.3.1. 全局配置
11.4.3.2. 本地配置
11.4.3.3. 提交代码
11.4.4. FAQ
11.4.4.1. error: gpg failed to sign the data
11.5. CI / CD
11.5.1. 远程服务器配置
11.5.2. 配置 CI / CD
11.5.2.1. 安装 GitLab Runner
11.5.2.2. 注册 gitlab-runner
11.5.2.3. 并发链接数设置
11.5.3. Shell 执行器
11.5.3.1. 注册 Gitlab Runner 为 Shell 执行器
11.5.3.2. 生成 SSH 证书
11.5.3.3. 数据库环境
11.5.3.4. Java 环境
11.5.3.5. NodeJS
11.5.3.6. Python 环境
11.5.3.7. 远程执行 sudo 提示密码
11.5.4. tags 的使用方法
11.5.5. Docker 执行器
11.5.6. JaCoCo
11.5.7. Kubernetes executor
11.5.7.1. 命名空间
11.5.7.2. 挂载卷
11.5.7.3. KUBERNETES_BEARER_TOKEN
11.5.7.4. 案例
11.5.8. 数据库结构监控
11.5.8.1. 什么是数据库结构版本控制
11.5.8.2. 为什么要做数据库结构本版控制
11.5.8.3. 何时做数据库结构本版控制
11.5.8.4. 在哪里做数据库结构本版控制
11.5.8.5. 谁来负责数据库结构本版控制
11.5.8.6. 怎样做数据库结构本版控制
11.5.8.7. CI/CD 配置
11.6. Pipeline 流水线
11.6.1. cache
11.6.1.1. Cache Key
11.6.1.2. 禁用 Cache
11.6.1.3. 定义多个缓存
11.6.2. stages
11.6.2.1. 依赖关系
11.6.2.2. 禁用 stage
11.6.3. variables
11.6.3.1. 列出所有环境变量
11.6.3.2. Git submodule
11.6.4. script /before_script / after_script
11.6.4.1. 条件判断
11.6.4.2. 多行脚本
11.6.5. only and except
11.6.5.1. 匹配 feature / hotfix 分支
11.6.5.2. 监控文件变化
11.6.6. 构建物
11.6.7. 允许失败
11.6.8. 定义何时开始job
11.6.9. services
11.6.10. tags
11.6.11. rules 规则
11.6.11.1. 条件判断
11.6.12. include 包含
11.6.13. 模版
11.6.14. release
11.6.15. 应用案例
11.6.15.1. Java
11.6.15.2. Node
11.6.15.3. vue.js android
11.6.15.4. Python
11.6.15.5. docker
11.6.15.6. include 高级用法
11.7. 软件包与镜像库
11.7.1. Maven 仓库
11.7.1.1. 将已存在的 JAR 文件部署到 Maven 仓库
11.7.2. Python Pypi 仓库
11.7.2.1. 个人访问令牌
11.7.2.2. 手工上传包
11.7.2.3. 在持续集成中配置
11.7.3. Node JS
11.7.4. Docker registry
11.7.4.1. 配置 Docker registry
11.7.4.2. 手动构建镜像并上传至容器镜像库
11.7.4.3. CI/CD 流水线配置
11.8. WebHook
11.9. FAQ
11.9.1. 查看日志
11.9.2. debug runner
11.9.3. gitolite 向 gitlab 迁移
11.9.4. 修改主机名
11.9.5. ERROR: Uploading artifacts as "archive" to coordinator... too large archive
12. Jenkins
12.1. 安装 Jenkins
12.1.1. OSCM 一键安装
12.1.2. Mac
12.1.3. CentOS
12.1.4. Ubuntu
12.1.5. Docker
12.1.6. Minikube
12.2. 配置 Jenkins
12.3. Jenkinsfile
12.3.1. Jenkinsfile - Declarative Pipeline
12.3.1.1. stages
12.3.1.2. script
12.3.1.3. junit
12.3.1.4. withEnv
12.3.1.5. parameters
12.3.1.6. options
12.3.1.7. triggers
12.3.1.8. tools
12.3.1.9. post
12.3.1.10. when 条件判断
12.3.1.11. 抛出错误
12.3.1.12. withCredentials
12.3.1.13. withMaven
12.3.1.14. isUnix() 判断操作系统类型
12.3.1.15. Jenkins pipeline 中使用 sshpass 实现 scp, ssh 远程运行
12.3.2. Jenkinsfile - Scripted Pipeline
12.3.2.1. git
12.3.2.2. 切换 JDK 版本
12.3.2.3. groovy
12.3.2.4. Groovy code
12.3.2.5. Ansi Color
12.3.2.6. 写文件操作
12.3.2.7. modules 实现模块
12.3.2.8. docker
12.3.2.9. input
12.3.2.10. if 条件判断
12.3.2.11. Docker
12.3.2.12. conditionalSteps
12.3.2.13. nexus
12.3.3. 设置环境变量
12.3.3.1. 系统环境变量
12.3.4. agent
12.3.4.1. label
12.3.4.2. docker
12.3.4.3. Dockerfile
12.3.5. Steps
12.3.5.1. parallel 平行执行
12.3.5.2. echo
12.3.5.3. catchError 捕获错误
12.3.5.4. 睡眠
12.3.5.5. 限制执行时间
12.3.5.6. 时间截
12.3.6. 版本控制
12.3.6.1. checkout
12.3.6.2. Git
12.3.7. 节点与过程
12.3.7.1. sh
12.3.7.2. Windows 批处理脚本
12.3.7.3. 分配工作空间
12.3.7.4. node
12.3.8. 工作区
12.3.8.1. 变更目录
12.3.8.2. 判断文件是否存在
12.3.8.3. 分配工作区
12.3.8.4. 清理工作区
12.3.8.5. 递归删除目录
12.3.8.6. 写文件
12.3.8.7. 读文件
12.4. Jenkins Job DSL / Plugin
12.5. Jenkins Plugin
12.5.1. Blue Ocean
12.5.2. Locale Plugin (国际化插件)
12.5.3. github-plugin 插件
12.5.4. Docker
12.5.4.1. 设置 Docker 主机和代理
12.5.4.2. 持久化
12.5.5. JaCoCo
12.5.5.1. Pipeline
12.5.6. SSH Pipeline Steps
12.5.7. Rancher
12.5.8. Kubernetes 插件
12.5.8.1. Kubernetes
12.5.8.2. Kubernetes :: Pipeline :: Kubernetes Steps
12.5.8.3. Kubernetes Continuous Deploy
12.5.8.4. Kubernetes Cli
12.5.9. HTTP Request Plugin
12.5.10. Skip Certificate Check plugin
12.5.11. Android Sign Plugin
12.6. Jenkinsfile Pipeline Example
12.6.1. Maven 子模块范例
12.6.2. 使用指定镜像构建
12.6.3. 命令行制作 Docker 镜像
12.6.4. Yarn
12.6.5. Android
13. SonarQube
13.1. 安装
13.1.1. Docker
13.1.2. netkiller-devops 安装
13.1.3. SonarScanner
13.1.3.1. Docker 安装
13.1.3.2. 本地安装
13.2. 配置
13.2.1. 登陆 SonarQube
13.2.2. 本地 maven 执行 SonarQube
13.2.3. 集成 Gitlab
13.2.4. SonarScanner
13.2.4.1. Node.js
13.3. FAQ
13.3.1. bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
13.3.2. failed: An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.0.2155:sonar: java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
13.3.3. [ERROR] An unknown compilation problem occurred
13.3.4. can't have 2 modules with the following key
14. Dagger
15. 持续集成工具
15.1. Code Review
15.1.1. Phabricator - an open source, software engineering platform
15.1.2. Gerrit
15.1.3. TeamCity
15.2. Nexus Repository OSS
15.2.1. 安装 Nexus
15.2.1.1. Docker
15.2.2. Nexus UI
15.2.3. maven 设置
15.2.4. Node.js
15.2.5. Ruby
17. TRAC
17.1. Ubuntu 安装
17.1.1. source code
17.1.2. easy_install
17.1.3. Apache httpd
17.2. CentOS 安装
17.2.1. trac.ini
17.2.2. standalone
17.2.3. Using Authentication
17.2.4. trac-admin
17.2.4.1. Permissions
17.2.4.2. Resync
17.3. Project Environment
17.3.1. Sqlite
17.3.2. MySQL
17.3.3. Plugin
17.3.3.1. AccountManagerPlugin
17.3.3.2. Subtickets
17.4. trac.ini
17.4.1. repository
17.4.2. attachment 附件配置
17.5. trac-admin
17.5.1. adduser script
17.6. Trac 项目管理
17.6.1. Administration
17.6.1.1. General
17.6.1.2. Ticket System
17.6.1.3. Version Control
17.6.2. Wiki
17.6.3. Timeline
17.6.4. Roadmap
17.6.5. Ticket
17.7. FAQ
17.7.1. TracError: Cannot load Python bindings for MySQL
17.8. Apache Bloodhound
18. Redmine
18.1. CentOS 安装
18.2. Redmine 运行
18.3. 插件
18.3.1. workflow
19. 项目管理工具
19.1. 禅道
19.2. TUTOS
III. 软件版本控制
20. Git - Fast Version Control System
20.1. Repositories 仓库管理
20.1.1. initial setup
20.1.2. 克隆代码
20.1.3. 切换分支
20.1.3.1. checkout master
20.1.3.2. checkout 分支
20.1.3.3. 通过 checkout 找回丢失的文件
20.1.3.4. checkout 所有远程分支
20.1.4. Creating and Commiting
20.1.5. Status
20.1.6. Diff
20.1.6.1. --name-only 仅显示文件名
20.1.7. Cloning
20.1.8. Push
20.1.9. Pull
20.1.10. fetch
20.1.11. Creating a Patch
20.1.12. reset
20.1.12.1. 还原文件
20.2. 分支管理
20.2.1. 查看本地分支
20.2.2. 创建分支
20.2.3. 删除分支
20.2.4. 切换分支
20.2.5. 重命名分支
20.2.6. git-show-branch - Show branches and their commits
20.3. 远程仓库
20.3.1. 修改 origin
20.3.2. 删除 origin
20.3.3. 仓库共享
20.3.3.1. Setting up a git server
20.4. 合并分支
20.4.1. 合并分支
20.4.2. rebase
20.4.3. 合并分支解决冲突
20.4.4. 终止合并
20.4.5. 合并单个文件
20.5. git log
20.5.1. 一行显示 --oneline
20.5.2. 查看文件历史记录
20.6. reflog
20.7. git-show - Show various types of objects
20.7.1. 查看指定版本的文件内容
20.8. Submodule 子模块
20.8.1. 添加模块
20.8.2. checkout 子模块
20.8.3. 删除子模块
20.9. Git Large File Storage
20.9.1. 安装 LFS 支持
20.9.2. LFS lock
20.10. command
20.10.1. hash-object
20.10.2. git-add - Add file contents to the index
20.10.3. git-status - Show the working tree status
20.10.4. git-commit - Record changes to the repository
20.10.5. git config
20.11. git-daemon 服务器
20.11.1. git-daemon - A really simple server for git repositories
20.11.2. git-daemon-sysvinit
20.11.3. inet.conf / xinetd 方式启动
20.11.4. git-daemon-run
20.11.5. Testing
20.12. git config
20.12.1. 查看配置
20.12.2. 编辑配置
20.12.3. 替换配置项
20.12.4. 配置默认分之
20.12.5. GPG签名
20.12.6. core.sshCommand
20.12.7. fatal: The remote end hung up unexpectedly
20.12.8. 忽略 SSL 检查
20.13. git-svn - Bidirectional operation between a single Subversion branch and git
20.14. .gitignore
20.15. .gitattributes
20.15.1. SVN Keywords
20.16. gitolite - SSH-based gatekeeper for git repositories
20.16.1. gitolite-admin
20.16.1.1. gitolite.conf
20.17. Web Tools
20.17.1. viewgit
20.18. FAQ
20.18.1. 导出最后一次修改过的文件
20.18.2. 导出指定版本区间修改过的文件
20.18.3. 回撤提交
20.18.4. 撤回单个文件提交
20.18.5. 每个项目一个证书
20.18.6. fatal: Not possible to fast-forward, aborting.
20.18.7. receive.denyCurrentBranch
20.18.8. 更新所有项目以及分支
21. Subversion
21.1. Invoking the Server
21.1.1. Installing
21.1.1.1. Ubuntu
21.1.1.2. CentOS 5
21.1.1.3. CentOS 6
21.1.2. standalone “daemon” process
21.1.2.1. starting subversion for debian/ubuntu
21.1.2.2. starting subversion daemon script for CentOS/Radhat
21.1.3. classic Unix-like inetd daemon
21.1.4. hooks
21.1.4.1. post-commit
21.1.5. WebDav
21.1.5.1. davfs2 - mount a WebDAV resource as a regular file system
21.2. repository 管理
21.2.1. create repository
21.2.2. user admin
21.2.3. authz
21.2.4. dump
21.3. 使用Subversion
21.3.1. Initialized empty subversion repository for project
21.3.2. ignore
21.3.3. 关键字替换
21.3.4. lock 加锁/ unlock 解锁
21.3.5. import
21.3.6. export 指定版本
21.3.7. 修订版本关键字
21.3.8. 恢复旧版本
21.4. branch
21.4.1. create
21.4.2. remove
21.4.3. switch
21.4.4. merge
21.4.5. relocate
21.5. FAQ
21.5.1. 递归添加文件
21.5.2. 清除项目里的所有.svn目录
21.5.3. color diff
21.5.4. cvs2svn
21.5.5. Macromedia Dreamweaver MX 2004 + WebDAV +Subversion
21.5.6. 指定用户名与密码
22. cvs - Concurrent Versions System
22.1. installation
22.1.1. chroot
22.2. cvs login | logout
22.3. cvs import
22.4. cvs checkout
22.5. cvs update
22.6. cvs add
22.7. cvs status
22.8. cvs commit
22.9. cvs remove
22.10. cvs log
22.11. cvs annotate
22.12. cvs diff
22.13. rename file
22.14. revision
22.15. cvs export
22.16. cvs release
22.17. branch
22.17.1. milestone
22.17.2. patch branch
22.18. keywords
23. Miscellaneous
23.1. 代码托管
23.1.1. sourceforge.net
23.1.1.1. http://netkiller.users.sourceforge.net/ 页面
23.1.2. Google Code
23.1.3. GitHub
23.1.3.1. 首次操作
23.1.3.2. clone 已经存在的仓库
23.2. GUI
23.2.1. TortoiseSVN
23.2.2. TortoiseGit
23.3. Browser interface for CVS and SVN version control repositories
IV. Configuration Management(配置管理)
24. Ansible - SSH-based configuration management, deployment, and task execution system
24.1. install
24.2. Getting Started
24.3. ansible - run a command somewhere else
24.3.1. host-pattern
24.3.2. -a MODULE_ARGS, --args=MODULE_ARGS module arguments
24.3.3. -i INVENTORY, --inventory-file=INVENTORY specify inventory host file (default=/etc/ansible/hosts)
24.3.4. -m MODULE_NAME, --module-name=MODULE_NAME module name to execute (default=command)
24.3.5. -s, --sudo run operations with sudo (nopasswd)
24.3.6. -u REMOTE_USER, --user=REMOTE_USER connect as this user (default=root)
24.3.7. 使用实例
24.4. ansible-doc - Show Ansible module documentation
24.5. ansible-playbook - run an ansible playbook
24.5.1. 包含文件用法
25. Capistrano
26. Puppet
26.1. Installing Puppet CentOS 6.3
26.2. Puppet 签名
26.2.1. Agent 节点
26.2.2. Master 服务器
26.3. test
26.3.1. Master
26.3.2. Agent
26.4. 配置文件
26.4.1. /etc/sysconfig/puppet
26.4.2. /etc/puppet/fileserver.conf
26.5. manifests
26.5.1. node
26.5.2. group, user 用户组管理
26.5.2.1. group
26.5.2.2. user
26.5.3. file
26.5.3.1. ensure
26.5.3.2. source
26.5.3.3. owner, group, mode
26.5.4. package
26.5.5. service
26.5.6. exec
26.5.7. cron
26.6. modules
26.7. firewall 配置
26.8. debug
26.8.1. master
26.8.2. node
26.9. FAQ
26.9.1. err: Could not request certificate: No route to host - connect(2)
26.9.2. No help available unless you have RDoc::usage installed
27. SaltStack
27.1. 安装 Salt Stack
27.1.1. 服务端安装
27.1.2. 客户端安装
27.1.3. 防火墙配置
27.1.4. key 管理
27.1.5. 测试
27.1.6. Demo
27.2. salt-key - Salt key is used to manage Salt authentication keys
27.3. salt 命令
27.3.1. cmd
27.3.1.1. cmd.run
27.3.1.2. cmd.script
27.3.2. pkg.install
27.3.3. network.interfaces
27.3.4. salt example
27.4. /etc/salt/master
27.4.1. File Server settings
27.4.2. Pillar settings
27.4.3. Node Groups
27.4.4. File Server Backend
27.5. sls 脚本
27.5.1. pkg
27.5.2. service
27.6. FAQ
27.6.1. Git fileserver backend is enabled in configuration but could not be loaded, is git-python installed
28. Chef
28.1. 安装 Chef
28.1.1. CentOS
29. Cobbler
30. Cfengine
31. func
32. (R)?ex Deployment & Configuration Management
33. 基于Web的系统管理软件
33.1. Webmin
33.1.1. webalizer
33.2. ajenti

表格清单

1. 表格标题

范例清单

11.1. Docker 部署 GitLab 查看登陆密码
11.2. Docker 部署 gitlab-runner 注册演示
11.3. Example - Release Notes
12.1. Shell Docker 示例
13.1. SonarQube pom.xml 配置
21.1. authz
26.1. puppetd
26.2. puppetca
27.1. salt command