Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | 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

电子书最近一次更新于 2023-04-05 18:44:27

版权声明

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

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.6. 怎样根治踢皮球
1.4. 内部外包与悬赏
1.4.1. 怎么样操作
1.4.2. 可能遇到的问题
1.4.3. 小结
1.5. 团队膨胀的原因分析
1.5.1. 人才管理
1.5.2. 再说说部门
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.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.5. Incident Management(突发事件管理)
7.5.1. 突发事件处理流程
7.5.2. 事件处理方式
7.6. 监控的艺术
7.6.1. 背景
7.6.2. 概述
7.6.3. 怎样监控
7.6.4. 总结
8. 成本管理
8.1. 警惕IT黑洞
8.1.1. 什么是IT黑洞
8.1.2. IT黑洞产生的原因分析
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.2. CentOS 8 Stream 安装 Gitlab
11.1.3. Docker 方式安装 Gitlab
11.1.4. Yum 安装 GitLab
11.1.5. 绑定SSL证书
11.1.6. Gitlab 管理
11.2. 初始化 Gitlab
11.2.1. 操作系统初始化
11.2.2. 创建用户
11.2.3. 初始化组
11.2.4. 初始化标签
11.2.5. 初始化分支
11.2.6. 部署环境
11.3. 项目管理
11.3.1. 组织架构
11.3.2. 项目计划
11.3.3. 工作流
11.3.4. 议题
11.3.5. 并行开发
11.3.6. 升级与发布相关
11.3.7. 代码审查
11.4. 通过GPG签名提交代码
11.4.1. 创建证书
11.4.2. 配置 Gitlab GPG
11.4.3. 配置 Git
11.4.4. FAQ
11.5. CI / CD
11.5.1. 远程服务器配置
11.5.2. 配置 CI / CD
11.5.3. Shell 执行器
11.5.4. tags 的使用方法
11.5.5. Docker 执行器
11.5.6. Kubernetes executor
11.5.7. Java 持续集成相关
11.5.8. 数据库结构监控
11.5.9. 持续部署 Nacos
11.6. Pipeline 流水线
11.6.1. cache
11.6.2. stages
11.6.3. variables
11.6.4. script /before_script / after_script
11.6.5. only and except
11.6.6. 构建物
11.6.7. 允许失败
11.6.8. 定义何时开始job
11.6.9. services
11.6.10. tags
11.6.11. rules 规则
11.6.12. include 包含
11.6.13. 模版
11.6.14. release
11.6.15. 应用案例
11.7. 软件包与镜像库
11.7.1. Maven 仓库
11.7.2. Python Pypi 仓库
11.7.3. Node JS
11.7.4. Docker registry
11.8. 服务器端 hooks
11.8.1. 创建全局 Server hooks
11.8.2. 给单个仓库配置 Server hooks
11.9. 客户端 hooks
11.9.1. 集成禅道
11.10. WebHook
11.11. FAQ
11.11.1. 查看日志
11.11.2. debug runner
11.11.3. gitolite 向 gitlab 迁移
11.11.4. 修改主机名
11.11.5. ERROR: Uploading artifacts as "archive" to coordinator... too large archive
11.11.6. ERROR: Job failed (system failure): prepare environment: waiting for pod running: timed out waiting for pod to start. Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information
11.11.7. 磁盘 100% 怎样清理
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.2. Jenkinsfile - Scripted Pipeline
12.3.3. 设置环境变量
12.3.4. agent
12.3.5. Steps
12.3.6. 版本控制
12.3.7. 节点与过程
12.3.8. 工作区
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.5. JaCoCo
12.5.6. SSH Pipeline Steps
12.5.7. Rancher
12.5.8. Kubernetes 插件
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. Kubernetes 安装 SonarQube
13.1.2. Docker
13.1.3. netkiller-devops 安装
13.1.4. SonarScanner
13.2. 配置
13.2.1. 登陆 SonarQube
13.2.2. 本地 maven 执行 SonarQube
13.2.3. 集成 Gitlab
13.2.4. SonarScanner
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
13.3.5. Kubernetes 运行 sonar-scanner
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.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.3. Project Environment
17.3.1. Sqlite
17.3.2. MySQL
17.3.3. Plugin
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.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.4. git-add - Add file contents to the index
20.1.5. Creating and Commiting
20.1.6. Status
20.1.7. Diff
20.1.8. Push
20.1.9. Pull
20.1.10. fetch
20.1.11. Creating a Patch
20.1.12. reset
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. git log
20.3.1. hash-object
20.3.2. 一行显示 --oneline
20.3.3. 查看文件历史记录
20.3.4. 格式化
20.4. reflog
20.5. 远程仓库
20.5.1. 查看远程地址
20.5.2. 添加远程仓库
20.5.3. 修改 origin
20.5.4. 删除 origin
20.5.5. 仓库共享
20.6. git show - Show various types of objects
20.6.1. 查看指定版本的文件内容
20.7. 合并分支
20.7.1. 合并分支
20.7.2. rebase
20.7.3. 合并分支解决冲突
20.7.4. 终止合并
20.7.5. 合并单个文件
20.7.6. Git 合并特定 commits 到另一个分支
20.8. 比较文件
20.8.1. 比较 SHA
20.8.2. 分支比较
20.9. Submodule 子模块
20.9.1. 添加模块
20.9.2. checkout 子模块
20.9.3. 删除子模块
20.10. Git Large File Storage
20.10.1. 安装 LFS 支持
20.10.2. LFS lock
20.11. git config
20.11.1. git config
20.11.2. 查看配置
20.11.3. 编辑配置
20.11.4. 替换配置项
20.11.5. 配置默认分之
20.11.6. GPG签名
20.11.7. core.sshCommand
20.11.8. fatal: The remote end hung up unexpectedly
20.11.9. 忽略 SSL 检查
20.11.10. 配置忽略合并文件
20.11.11. .gitignore
20.11.12. .gitattributes
20.11.13. 配置模版目录
20.12. git-rev-parse - Pick out and massage parameters
20.12.1. 获得当前提交ID
20.13. git-daemon 服务器
20.13.1. git-daemon - A really simple server for git repositories
20.13.2. git-daemon-sysvinit
20.13.3. inet.conf / xinetd 方式启动
20.13.4. git-daemon-run
20.13.5. Testing
20.14. git-svn - Bidirectional operation between a single Subversion branch and git
20.15. Web Tools
20.15.1. viewgit
20.16. gitolite - SSH-based gatekeeper for git repositories
20.16.1. gitolite-admin
20.17. FAQ
20.17.1. 导出最后一次修改过的文件
20.17.2. 导出指定版本区间修改过的文件
20.17.3. 撤销当前修改,恢复到远程最后一次提交
20.17.4. 回撤提交
20.17.5. 撤回单个文件提交
20.17.6. 合并分支中的单个
20.17.7. 每个项目一个证书
20.17.8. fatal: Not possible to fast-forward, aborting.
20.17.9. receive.denyCurrentBranch
20.17.10. 更新所有项目以及分支
20.17.11. 找回丢失的分支
21. Subversion
21.1. Invoking the Server
21.1.1. Installing
21.1.2. standalone “daemon” process
21.1.3. classic Unix-like inetd daemon
21.1.4. hooks
21.1.5. WebDav
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.2. Google Code
23.1.3. GitHub
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.3. file
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.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