安安 - selinux
type: channel
link: https://blog.90.vc/tag/selinux/
items: 使用kubeadmin安装kubernetes 1.15
items: Ansible 基本命令及模块的使用
items: cobbler安装及配置
items: nginx使用proxy模式时selinux设置
items: zabbix selinux 相关设置

使用kubeadmin安装kubernetes 1.15
type: item
date: 2019-07-11T06:53:00+00:00
description: kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具，伴随Kubernetes每个版本的发布都会同步更新，kubeadm会对集群配置方面的一些实践做调整，通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。最近发布的Kubernetes 1.15中，kubeadm对HA集群的配置已经达到beta可用，说明kubeadm距离生产环境中可用的距离越来越近了。1.准备1.1系统配置在安装之前，需要先做如下准备。两台CentOS 7.6主机如下：cat /etc/hosts 172.20.0.11 ip-172-20-0-11.cu-sd-cn.vm.7x34.com 172.20.0.12 ip-172-20-0-12.cu-sd-cn.vm.7x34.com 如果各个主机启用了防火墙，需要开放Kubernetes各个组件所需要的端口，可以查看Installing kubeadm中的”Check required ports”一节。 这里简单起见在各节点禁用防火墙：systemctl stop firewalld systemctl disable firewalld禁用SELINUX：setenforce 0 vi /etc/selinux/config SELINUX=disabled创建/etc/sysctl.d/k8s.conf文件，添加如下内容：net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1执行命令使修改生效。modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf1.2kube-proxy开启ipvs的前置条件由于ipvs已经加入到了内核的主干，所以为kube-proxy开启ipvs的前提需要加载以下的内核模块：ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack_ipv4在所有的Kubernetes节点node1和node2上执行以下脚本:cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件，保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。接下来还需要确保各个节点上已经安装了ipset软件包yum install ipset。 为了便于查看ipvs的代理规则，最好安装一下管理工具ipvsadm yum install ipvsadm。如果以上前提条件如果不满足，则即使kube-proxy的配置开启了ipvs模式，也会退回到iptables模式。1.3安装DockerKubernetes从1.6开始使用CRI(Container Runtime Interface)容器运行时接口。默认的容器运行时仍然是Docker，使用的是kubelet中内置dockershim CRI实现。安装docker的yum源:yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo查看最新的Docker版本：yum list docker-ce.x86_64 --showduplicates |sort -r docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable do…

Ansible 基本命令及模块的使用
type: item
date: 2019-05-23T05:59:00+00:00
description: 1. 命令行参数-v,–verbose 详细模式，如果命令执行成功，输出详细的结果(-vv –vvv -vvvv) -i PATH,–inventory=PATH 指定host文件的路径，默认是在/etc/ansible/hosts(生产环境经常用到) -f NUM,–forks=NU NUM是指定一个整数，默认是5，指定fork开启同步进程的个数。 -m NAME,–module-name=NAME 指定使用的module名称，默认是command -m DIRECTORY,–module-path=DIRECTORY 指定module的目录来加载module，默认是/usr/share/ansible, -a,MODULE_ARGS 指定module模块的参数 -k,-ask-pass 提示输入ssh的密码，而不是使用基于ssh的密钥认证 -sudo 指定使用sudo获得root权限(生产环境经常用到) -K,-ask-sudo-pass 提示输入sudo密码，与–sudo一起使用 (生产环境经常用到) -u USERNAME,-user=USERNAME 指定移动端的执行用户 -C,-check 测试此命令执行会改变什么内容，不会真正的去执行2. command模块测试环境[root@temp01 ~]# ansible all -a "pwd" 192.168.3.70 | SUCCESS | rc=0 >> /root 192.168.3.60 | SUCCESS | rc=0 >> /root [root@temp01 ~]# ansible all -m command -a "pwd" #-m command 原来是可以省略的，ansible 默认模块就是command 192.168.3.70 | SUCCESS | rc=0 >> /root 192.168.3.60 | SUCCESS | rc=0 >> /root3. 再用ping模块#-f 参数用法 [root@temp01 ~]# ansible all -m ping -f 1 #all 表示hosts里面所有主机 -m 调用模块 -f 指定同步进程数 192.168.3.60 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.3.70 | SUCCESS => { "changed": false, "ping": "pong" } #-C参数用法 [root@temp01 ~]# ansible all -m ping -f 1 -C 192.168.3.60 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.3.70 | SUCCESS => { "changed": false, "ping": "pong" }4. user模块[root@temp01 ~]# ansible db -m user -a 'name=DBA uid=505 home=/home/dba shell=/sbin/nologin' 192.168.3.70 | SUCCESS => { "changed": true, "comment": "", "createhome": true, "group": 505, "home": "/home/dba", "name": "DBA", "shell": "/sbin/nologin", "state": "present", "system": false, "uid": 505 } [root@temp01 ~]# ansible db -m user -a 'name=DBA state=absent' #state属性有：present表示添加,absend表示删除，state属性默认是present 192.168.3.70 | SUCCESS => { "changed": true, "force": false, "name": "DBA", "remove": false, "state": "absent" } 修改用户密码[root@temp01 ansible_playbook]# ansible all -m shell -a 'echo "123456" | passwd foo --stdin' 192.168.3.60 | SUCCESS | rc=0 >> Changing password for user foo. passwd: all authentication tokens updated successfully. 192.168.…

cobbler安装及配置
type: item
date: 2019-01-24T07:16:00+00:00
description: 环境准备操作系统：Centos 7 1810安装方式：YUM配置epel的YUM源安装cobbleryum install cobbler cobbler-web pykickstart httpd dhcp tftp-server启动httpd、tftp、cobblerd服务，并设置为开机启动systemctl start cobblerd systemctl start httpd systemctl start tftp #设置相关服务开机启动 systemctl enable cobblerd systemctl enable httpd systemctl enable tftp systemctl enable rsyncd配置cobbler执行cobbler check命令检查cobbler设置这里可能会报如下错误httpd does not appear to be running and proxying cobbler, or SELinux is in the way. Original traceback: Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/cobbler/cli.py", line 251, in check_setup s.ping() File "/usr/lib64/python2.7/xmlrpclib.py", line 1233, in __call__ return self.__send(self.__name, args) File "/usr/lib64/python2.7/xmlrpclib.py", line 1591, in __request verbose=self.__verbose File "/usr/lib64/python2.7/xmlrpclib.py", line 1273, in request return self.single_request(host, handler, request_body, verbose) File "/usr/lib64/python2.7/xmlrpclib.py", line 1321, in single_request response.msg, ProtocolError: <ProtocolError for 127.0.0.1:80/cobbler_api: 503 Service Unavailable>根据提示，可以确定是selinux引起的问题，可以将selinux关掉或者执行如下操作setsebool -P httpd_can_network_connect true这里建议关掉selinux，如果不想关的话，则参考如下链接的设置方法https://github.com/cobbler/cobbler/wiki/Selinux再次执行cobbler check命令检查，输出信息如下The following are potential configuration items that you may want to fix: 1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it. 2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network. 3 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment: https://github.com/cobbler/cobbler/wiki/Selinux 4 : change 'disable' t…

nginx使用proxy模式时selinux设置
type: item
date: 2018-11-02T06:03:00+00:00
description: 新配置的nginx，做proxy转发时遇到错误，页面无法打开，access日志中报502错误，从nginx可以curl到后端页面，经查error日志，发现如下报错2015/12/28 16:42:00 [crit] 1850#0: *1 connect() to 192.168.1.1:8080 failed (13: Permission denied) while connecting to upstream, client: ***.***.***.***, server: *****.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://*******", host: "tl.cm-inf.com", referrer: "http://*******"可以看出，错误中提示 Permission denied ，但nginx是可以curl出结果的，初步判断为selinux的问题，解决方法如下：关闭selinux调整selinux配置，在终端执行以下命令：setsebool -P httpd_can_network_connect 1推荐使用第二种方法，selinux尽量不要一刀切关掉，在安全方面还是非常有用的。

zabbix selinux 相关设置
type: item
date: 2018-11-02T05:36:00+00:00
description: zabbix启动的时候报错如下：28395:20170122:112700.799 using configuration file: /etc/zabbix/zabbix_agentd.conf28395:20170122:112700.799 cannot set resource limit: [13] Permission denied28395:20170122:112700.799 cannot disable core dump, exiting...基本能确定是selinux的问题，Centos6处理方法关闭selinux（不推荐）setenforce 0更新selinux策略即可yum update selinux-policy.noarch selinux-policy-targeted.noarch更新完成之后重新启动zabbix即可Centos 7下处理方法今天发现centos 7 1611使用此方法并不管用，现新增方法如下：安装selinux相关工具yum install policycoreutils-python如果是server_agent端，则按照以下操作进行cat /var/log/audit/audit.log | grep zabbix_agentd | grep denied | audit2allow -M zabbix_agent_setrlimit执行上述命令后，会在当前目录生成一个名为zabbix_agent_setrlimit.pp的文件，接下来执行以下命令semodule -i zabbix_agent_setrlimit.pp如果是server端，则按照如下方法执行即可cat /var/log/audit/audit.log | grep zabbix_server | grep denied | audit2allow -M zabbix_server_setrlimit semodule -i zabbix_server_setrlimit.pp最后重启zabbix即可