Too young, too simple. Sometimes, naive & stupid

Jenkins Pipeline

Jenkins Pipeline是一套插件,支持在Jenkins中实现和集成持续交付管道

一个持续交付(CD)管道是将软件从版本控制直接传递给用户和客户的过程的自动化表达。对软件的每次更改(在源代码管理中提交)都会在发布的过程中经历一个复杂的过程。此过程涉及以可靠且可重复的方式构建软件,以及通过多个测试和部署阶段推进构建的软件。

Pipline提供了一组可拓展的工具,用于通过管道特定域语言(DSL)语法“作为代码”对简单到复杂的传输管道进行建模。

Jenkins Pipeline 的定义被写入一个文本文件(Jenkinsfile),该文件可以提交给项目的源代码控制库。这是“Pipeline as code”的基础;将CD管道视为应用程序的一部分,以便像任何其他代码一样进行版本控制和审查。

创建jenkinsfile并将其提交给源代码管理提供了许多直接的好处:

  • 自动为所有分支和拉取和请求创建Pipeline构建过程。
  • Pipeline上的代码审查/迭代(以及剩余的源代码)。
  • Pipeline的审计跟踪。
  • Pipeline的单一数据来源,可由项目的多个成员查看和编辑。

虽然在Web UI或Jenkinsfile中定义Pipeline的语法是相同的,但通常认为最佳做法是在Jenkinsfile中定义Pipeline并检查其中的源码管理。

阅读全文 »

许多第三方站点和应用可以与Jenkins交互,应用的管理员可以在应用中配置凭据以供Jenkins使用,通常是通过这些凭据应用访问控制。Jenkins管理员在Jenkins中添加/配置这些凭据,管道项目就可以使用凭据与这些第三方应用程序进行交互。

注意:Jenkins凭据功能由Credentials Binding插件提供。

可以使用存储在Jenkins中的凭据:

  • 任何适用于整个Jenkins的地方(全局证书),
  • 通过特定的Pipeline项目,
  • 由特定的Jenkins用户。

Jenkins可以存储以下类型的凭据:

  • Secret text - 诸如API令牌之类的令牌(例如GitHub个人访问令牌),
  • 用户名和密码 - 可以作为单独的组件处理,也可以作为格式的冒号分隔字符串处理username:password(在处理凭据中详细了解此信息 ),
  • Secret file - 本质上是文件中的秘密内容,
  • 带有私钥的SSH用户名 - SSH公钥/私钥对
  • 证书 - PKCS#12证书文件和可选密码,或
  • Docker主机证书身份验证凭据。
    阅读全文 »

模块化程序设计(Modular Programming)

将一个大规模程序自顶向下划分为一些较小的相对独立又相互关联的模块

  • 程序设计中最重要的思想之一
  • 几乎所有的商用程序都采用了模块化程序设计的理念
  • 面向对象编程在某种程度上也是对模块化程序思想的一种延伸

模块分解的目标

  • 使模块内部的实现细节对外不可见,实现信息隐藏(Information Hiding)
  • 限制模块的复杂性和规模
  • 保证模块的相对独立性(Module Independence)和正确性
    阅读全文 »

特征 rsyslog syslog-ng的
输入源
UNIX域套接字
UDP
TCP
RELP
RFC 3195 / BEEP 是(通过im3195
内核日志
文件
将消息生成器标记为可选输入
Windows事件日志 通过Windows事件记录软件,例如 EventReporterMonitorWare Agent (都是商业软件,都是基于rsyslog开发的)
网络(协议)支持
支持(普通)基于tcp的syslog
支持GSS-API
能够限制允许的网络发件人(系统日志ACL)
在syslog / tcp连接上支持基于syslog-transport-tls的成帧
udp系统日志
syslog over RELP 真正可靠的消息传递(为什么普通的tcp syslog不可靠?
(zlib)消息压缩
支持通过可靠的RFC 3195传送接收消息
支持TLS / SSL保护的系统日志 本地(从3.19.0)通过stunnel
支持IETF新的系统日志协议草案
支持IETF新的syslog-transport-tls草案 是(自3.19.0开始 - 世界首次实施)
支持IPv6
本地能够发送SNMP陷阱
能够在NAT环境和中继链中保留原始主机名
消息过滤
过滤syslog设施和优先级
过滤主机名
筛选应用程序
过滤消息内容
过滤发送IP地址
能够过滤上面未提到的任何其他消息字段(包括子字符串等)
支持复杂的过滤器,使用完整的布尔代数和/或/和运算符和括号
支持可重复使用的过滤器:指定一次过滤器并将其用于多个选择器行 没有
支持过滤器内的arbritrary复杂算术和字符串表达式
在过滤器中使用正则表达式的能力
支持丢弃基于过滤器的消息
能够根据出现的顺序过滤出消息 是(从3.21.3开始)
功能强大的BSD风格的主机名和程序名称块,以方便多主机支持
支持的数据库输出
MySQL的 yes (原生ommysql, omlibdbi
PostgreSQL的 yes(native ompgsql, omlibdbi
神谕 是(omlibdbi
SQLite的 是(omlibdbi
Microsoft SQL(Open TDS) 是(omlibdbi
Sybase(Open TDS) 是(omlibdbi
火鸟/ Interbase的 是(omlibdbi
安格尔 是(omlibdbi
mSQL的 是(omlibdbi
企业功能
支持对消息进行按需磁盘后台处理
能够限制假脱机文件使用的磁盘空间
每个操作都可以使用自己独立的假脱机文件集
不同的假脱机文件集可以放在不同的磁盘上
仅在配置的时间范围内处理假脱机邮件的能力(例如,仅在非高峰时段处理邮件,在高峰时段仅处理邮件) (可以独立配置主队列和每个操作队列)
能够配置备份系统日志/数据库服务器
专业支持
配置文件
配置文件格式 兼容传统的syslogd,但很难看
能够从其他配置文件中包含配置文件
能够包含存在于特定目录中的所有配置文件
可扩展性
功能拆分在可单独加载的模块中
支持第三方输入插件
支持第三方输出插件
其他特性
能够动态生成文件名和目录(日志目标)
控制日志输出格式,包括将通道和优先级显示为可见日志数据的能力
本地发送邮件的能力 是(ommail,在3.17.0中引入)
良好的时间戳格式控制; 至少需要ISO 8601 / RFC 3339秒分辨率UTC区域
能够重新格式化消息内容并使用子字符串
支持大于2GB的日志文件
支持日志文件大小限制和自动翻转命令执行
支持在单台机器上运行多个syslogd实例
能够在收到的消息上执行shell脚本
将消息传递给连续运行的程序的能力
为未来的多核机器提供大规模多线程
能够在每个选择线的基础上控制重复行减少(“最后一条消息重复n次”)
支持每个选择器/过滤条件的多个操作
网页界面 phpLogCon[也适用于 php-syslog-ng ]
使用文本文件作为输入源
限速输出动作
在系统压力下丢弃低优先级的消息
流量控制(当系统忙时减慢信息接收) 是的(先进的,有多种方式根据个别输入功能,基于水印来减慢输入)
重写消息
将数据输出为各种格式
控制“消息重复n次”生成的能力
执照 GPLv3(GPLv2 for v2分支)
支持的平台 在Solaris上看到的Linux,BSD,轶事; 编译和在HP UX上完成的基本测试
DNS缓存

rsyslog 项目于2004年启动,它基于主要作者(Rainer Gerhards)12年以上的日志记录经验。例如,Rainer 在1996年初也编写了第一个Windows系统日志服务器,并 于1997 年初发明了eventlog-to-syslog类应用程序。甚至在他编写这些产品之前,他也进行了自定义日志开发和咨询。Rsyslog吸取了丰富的经验,有时甚至在代码上。

很久没更新博客了,原因有一下几个, 一是写这个东西真得很耗时(就算是借鉴博客文档),二是报了个自考(3月份报的4科,4月份考试),结果今天连考试都没去,因为书都没看完。

Systemd 并不是简单的把service、chkconfig等变成systemctl,而是管天管地管空气;为什么要强迫自己使用systemd?作为菜鸡的我,始终坚信,不管装什么软件都是用最新的,一方面能使自己体验到最新的技术(当然也会掉进深渊大坑),一方面强迫自己不去搜现成的博客,防止自己跟着大佬的脚步,一路复制粘贴就成功。

最近发现自己真得是什么都不会,你看别人工程师介绍自己的时候, 都可以说自己是xx工程师, 比如网络,安全存储系统 ,别人一问我 “你是做什么的阿?”,我只能说:“emmmm,就打打杂。”其实内心想说自己会linux, 然而 根本就不会阿, 任何一个模块 追踪到细节都不怎么了解,(当然了,有些模块压根就不知道)算下来,我也就是会 apt yum , 会 servce systemctl 会 ls rm ,还会终极神器(reboot) ,我要开始下一阶段的学习了,开始学习一些细节,以后好吹逼,今天,我们从systemd开始。

systemd是什么?

systemd是一套Linux系统的基本构建模块。它提供了一个作为PID 1运行的系统和服务管理器,并启动系统的其余部分。systemd提供了积极的并行化功能,使用套接字和D-Bus激活来启动服务,提供按需启动守护进程,使用Linux控制组跟踪进程,维护挂载和自动挂载点,并实现精心设计的基于事务的基于依赖关系的服务控制逻辑。systemd支持SysV和LSB初始化脚本,并作为sysvinit的替代品。其他部分包括日志守护程序,用于控制基本系统配置的实用程序,如主机名,日期,区域设置,维护登录用户列表以及运行容器和虚拟机,系统帐户,运行时目录和设置以及守护进程以管理简单网络配置,网络时间同步,日志转发和名称解析。

比较Linux的三个最相关的init系统:sysvinit,Upstart和systemd

常规特性

阅读全文 »

程序的正确性

  • 程序的正确性

    • 程序能否按照预定的要求完成预定的功能,且打到预定的效果。
    • 对于程序的任何一组允许的==输入数据==,程序执行后都能得到一组与之相对应的正确的==输出数据==。
  • 程序测试

    • 不可能对所有可能的输入去测试其输出是否正确。

    • 测试只能证明程序有错误,不能证明程序无错误。

  • 程序正确性证明

    • 直接对源程序证明其正确性的过程,是一种逻辑证明方法。

确定循环过程是正确的

  • 找到循环不变式(Loop Invariant
    • 在循环体中选取一个点, 在该点处建立一个断言(逻辑表达式
    • 使得每次循环执行到该点时,这个逻辑表达式在循环体中总为“真”。
    • 不依赖于前面所执行过的循环次数以及变化量的变化。
    • 表示的是一种在循环过程进行时保持不变的性质。
阅读全文 »

在操作系统运行时,通常需要添加,删除或重新调整存储设备的大小,而无需重新引导。本章概述在系统运行时可用于在Red Hat Enterprise Linux 7主机系统上重新配置存储设备的过程。它涵盖了iSCSI和光纤通道存储互连; 其他互连类型可能会在未来添加。

本章重点介绍如何添加,删除,修改和监视存储设备。它没有详细讨论光纤通道或iSCSI协议。有关这些协议的更多信息,请参阅其他文档。

本章引用了各种sysfs对象。红帽建议sysfs对象名称和目录结构在主要的红帽企业Linux版本中可能会发生变化。这是因为上游Linux内核不提供稳定的内部API。有关如何以sysfs可移动方式引用对象的指导,请参阅内核源代码树中的文档以获取指导。/usr/share/doc/kernel-doc-*version*/Documentation/sysfs-rules.txt

在线存储重新配置必须小心。过程中的系统故障或中断可能会导致意外的结果。红帽建议您在更改操作期间尽可能减少系统负载。这将减少I / O错误,内存不足错误或在配置更改期间发生的类似错误的可能性。以下部分提供了更具体的指导方针。

另外,Red Hat建议您在重新配置在线存储之前备份所有数据。

阅读全文 »

安装期间的存储注意事项

许多存储设备和文件系统设置只能在安装时进行配置。其他设置(如文件系统类型)只能在不需要重新格式化的情况下进行修改。因此,在安装红帽企业版Linux 7之前,谨慎的规划您的存储配置。

阅读全文 »

文件系统部分提供了有关文件系统结构和维护,Btrfs技术预览以及Red Hat完全支持的文件系统的信息:: ext3, ext4, GFS2, XFS, NFS, and FS-Cache.

Note

Btrfs is available as a Technology Preview feature in Red Hat Enterprise Linux 7 but has been deprecated since the Red Hat Enterprise Linux 7.4 release. It will be removed in a future major release of Red Hat Enterprise Linux.

XFS is the default file system in Red Hat Enterprise Linux 7 and Red Hat, and Red Hat recommends you to use XFS unless you have a strong reason to use another file system.

阅读全文 »

软件RAID

独立磁盘冗余阵列“RAID”是根据所使用的RAID级别,使用多个磁盘来提供不同的增加数据可靠性和/或增加输入/输出性能的平衡的方法。RAID可以通过软件(操作系统知道两个驱动器并主动维护两个驱动器)或硬件(一个特殊的控制器使操作系统认为只有一个驱动器并保持驱动器不可见)实现。

当前版本的Linux(和Ubuntu)包含的RAID软件基于“mdadm” 驱动程序,运行良好,甚至比许多所谓的“硬件”RAID控制器更好。本节将指导您如何在两个物理硬盘驱动器上使用两个RAID1分区来安装Ubuntu Server Edition,一个用于 “/“ 和另一个用于swap。

分区

按照安装步骤进行操作,直到进入“ 分区磁盘”步骤,然后:

  1. 选择Manual作为分区方法。

  2. 选择第一个硬盘,并同意“Create a new empty partition table on this device?”。

    对于您希望成为RAID阵列一部分的每个驱动器重复此步骤。

  3. 选择第一个驱动器上的“FREE SPACE”,然后选择“Create a new partition”。

  4. 接下来,选择分区的大小。这个分区将是交换分区,交换大小的一般规则是RAM的两倍。输入分区大小,然后选择“ Primary”,然后选择“ Beginning”。

    阅读全文 »

基础

段落和换行符

一个段落只是一个或多个连续的文本行。在Markdown源代码中,段落由多个空行分隔。在Typora,你只需要按下来Return创建一个新的段落。

Shift+ Return创建一个换行符。但是,大多数Markdown解析器将忽略单行断点,使其他降价解析器识别您的换行符,您可以在行的末尾留下两个空格,或插入<br/>

标题

标题在行首使用1-6个哈希字符,对应于标题级别1-6。例如:

1
2
3
# This is an H1
## This is an H2
###### This is an H6

在typora中,输入’#’,然后输入标题内容,然后Return按键将创建一个标题。

引用文字

阅读全文 »