当前位置: 首页 > 科技观察

说说Ansible的自动化运维架构

时间:2023-03-19 22:21:02 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com一、ANSIBLE简介1、什么是ansible?Ansible是一款自动化运维工具,基于Python开发,集成了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现批量系统配置、批量程序部署、批量操作命令、等功能。2.ansible的历史Ansible工具是由配置服务器应用程序Cobbler的作者,Fedora统一网络控制器(Func)远程管理框架的合著者MichaelDeHaan开发的。RedHat于2015年10月收购了Ansible。Ansible是RedHat拥有的FedoraLinux发行版的一部分,也可通过ExtraLinuxforEnterpriseLinux(EPEL)用于RedHatEnterpriseLinux、CentOS、ScientificLinux和OracleLinux,其中包括其他操作系统。3.Ansible有很多重要的优势:跨平台支持:Ansible为物理、虚拟、云和容器环境中的Linux、Windows、UNIX和网络设备提供无代理支持。人类可读的自动化:AnsiblePlaybook以YAML文本文件编写,易于阅读,有助于确保每个人都了解他们将要做什么。完美描述应用程序:AnsiblePlaybooks可以对应用程序环境的每一个变化和每个方面进行描述和记录。易于管理的版本控制:AnsiblePlaybook和项目都是纯文本。它们可以像源代码一样对待并放置在现有的版本控制系统中。支持动态清单:Ansible管理的机器列表可以从外部来源动态更新,以随时获取所有托管服务器的正确当前列表,无论基础设施或位置如何。可以轻松与其他系统集成的编排:HPSA、Puppet、Jenkins、RedHatSatellite和您环境中存在的其他系统可以利用并集成到您的Ansible工作流中。四、ansible工作原理2、安装ansible1,关闭防火墙setenforce0systemctlstopfirewalld2,修改主机名hostnameansible/client3,修改映射文件vim/etc/hosts4,下载epel-release软件包yum-yinstallepel-release5,安装ansibleyum-yinstallansible6。创建SSH平面交互登录(一)passwd和yes都需要发送密钥。ssh-keygen-trsaserver:client:copythekeytoothermachines:ssh-copy-id192.168.253.128复制key时忽略passwd和yes(一键复制)。sshpass-ppasswdssh-pusername@hostIP-oStrictHostKeyChecking=no3.使用ansible1并写入清单(相当于/etc/ansible/hosts),它是主机的localhost或ip:viminventoryweb1.example.comweb2。example.comdb1.example.comdb2.example.com192.0.2.422,写ansible.cfgvimansible.cfg[defaults]inventory=./inventoryremote_user=userask_pass=false[privilege_escalation]become=truebecome_method=sudobecome_user=rootbecome_ask_pass指定指令描述=ven目录文件的路径。remote_user是用于登录托管主机的用户名。如果未指定,则使用当前用户名。ask_pass是否提示SSHpasswd。如果使用SSH公钥身份验证,则Yes为false。是否在托管用户连接后自动切换主机(通常为root)。这也可以是drama-specified:drama-specified。become_method如何切换用户(通常是sudo,这是默认的,但su是一个选项)。become_user要在托管主机上切换到的用户(通常是Root,这是默认设置)。become_ask_pass是否提示输入您的become_method的密码。默认值为假。[defaults]设置Ansible运行的默认值。[privilege_escalation]配置Ansible来管理权限升级方法。host优先级最高,还是自己创建的ansible.cfg3,ansible的adhocansibleall-mping直接执行ansible外的模块。注意:Ansible的返回结果非常友好,一般用红色、绿色和橙色三种颜色来表示执行结果。①红色表示执行过程中出现异常。②橙色表示执行命令后目标状态发生变化。③绿色表示执行成功,未对目标机进行任何修改。参数含义:-v(--verbose):输出详细的执行过程信息,可以得到执行过程的所有信息。-iPATH(–inventory=PATH):指定库存信息,默认为/etc/ansible/hosts。-fNUM(--forks=NUM):并发线程数,默认5个线程。--private-key=PRIVATE_KEY_FILE指定密钥文件,(不经常使用)。-mNAME,--moudle-name=NAME:指定执行时使用的模块。-MDIRECTORY(–module-path=DIRECTORY):指定模块存放路径,默认为/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设置默认目录。(不经常使用)。-aARGUMENTS(--args=ARGUMENTS):指定模块参数。-u用户名(--user=用户名);指定远程主机USERNAME以运行该命令。-lsubset(--limit=SUBSET):限制运行的主机。–list-hosts:在不执行任何命令的情况下列出符合条件的主机列表。4.Ansible基本模块模块类别模块文件模块?copy:复制本地文件到托管主机包模块?yum:使用YUM包管理器系统模块管理包?firewalld:使用firewalldNet工具模块管理任意端口和服务?get_url:通过HTTP、HTTPS或FTP5下载文件,ansible-docansible-doc用于查询ansible模块文档的描述(帮助文档),类似于man命令。(1)列出支持的模块。ansible-doc-lansible-doc-scommandansible-doc-srawansible-doc-sping6、ansible-playbookansible-playbook是日常应用中使用频率最高的命令,类似于Linux系统中的sh或source命令,使用执行一系列任务的工作机制是通过读取准备好的playbook文件来实现集中处理任务。ansible-playbook命令后跟一个yml或yaml格式的剧本文件。剧本文件存储要执行的任务代码。Playbook核心元素Hosts:要执行的远程主机列表。任务:一组任务。Varniables:内置变量或自定义变量在playbook中被调用。Templates:模板,文件,可以替换模板文件中的变量,实现一些简单的逻辑。处理程序与通知结合使用。特定条件触发的操作只有在条件满足时才执行,否则不执行。tags:tag指定要执行的任务,用于选择并运行playbook中的部分代码。Ansible是幂等的,所以它会自动跳过没有变化的部分。即便如此,有些代码仍然用于测试,当它不改变的时候,时间会很长。这时候如果确定没有变化,可以通过标签跳过这些代码片段。语法:ansible-playbookplaybook.yml检查语法错误。ansible-playbook--syntax-checkwebserver.yml7、ansible-console虚拟终端ansible-console是ansible为用户提供的交互工具,类似于Windows中的cmd和Linux中的shell,用户可以通过ansible-console使用各种内置的-在ansible命令中像shell一样在虚拟终端上运行,为习惯使用shell交互的用户提供了良好的体验。在终端输入ansible-console命令后,显示如下。所有操作与shell类似,支持Tab键补全。按快捷键Ctrl+D或Ctrl+C退出当前虚拟终端。8、ansible-galaxyansible-galaxy命令用于方便的从https://galaxy.ansible.com/站点下载第三方扩展模块。创建rolrs目录结构:ansiblegalaxyinit目录9.ansible-vaultAnsible-vault主要用于包含敏感信息的配置文件,不希望被别人看到。Vault可以帮你加密/解密这个配置文件,属于高级用法。主要是针对playbook,比如涉及到配置passwd或者其他变量的时候,可以使用这个命令进行加密,这样我们通过cat看到的就是一个passwd字符串文件。编辑时需要输入预先设置的密码才能打开。执行这种playbook文件时,需要加上--ask-vault-pass参数,还需要输入passwd,才能正常执行。10.ansible-pull该命令使用了ansible的另一种模式——pull模式,与我们平时使用的push模式正好相反。适用于以下场景:您有海量机器需要配置。即使使用非常高的线程,它也会花费很多时间;你会想在没有网络连接的机器上运行Anisble,例如在启动和安装之后。4、输出facts变量内容的一些常用命令:ansiblehost-msetup创建加密变量文件:ansible-vaultcreatesecret.yml查看加密变量文件:ansible-vaultviewsecret1.yml编辑加密变量文件:ansible-vaulteditsecret.yml可以加密文件:ansible-vaultencryptsecret1.ymlsecret2.yml解密变量文件:ansible-vaultdecryptsecret1.yml--output=secret1-decrypted.yml修改加密文件密码:ansible-保管库重新加密密钥。yml执行加密变量文件:ansible-playbook--vault-id@promptsite.yml了解更多开源信息,请访问:开源基础软件社区https://ost.51cto.com。