{"id":36883,"date":"2023-09-16T18:16:12","date_gmt":"2022-12-01T04:02:32","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/"},"modified":"2024-05-04T00:03:15","modified_gmt":"2024-05-03T16:03:15","slug":"%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/","title":{"rendered":"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09"},"content":{"rendered":"<p>\u6211\u4f7f\u7528Ansible\u7684Playbook\u6765\u5b89\u88c5Apache 2.4\uff0c\u4ee5\u4e0b\u662f\u6211\u8bb0\u5f55\u7684\u5907\u5fd8\u5f55\u3002<\/p>\n<p>\u8fd9\u6b21\u6211\u4eec\u5c06\u6e90\u6587\u4ef6\u6253\u5305\u4e3arpm\u6587\u4ef6\u7136\u540e\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n<h2>\u73af\u5883<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">CentOS 6.7<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">ansible 2.0<\/ul>\n<p>\u203b\u4e3a\u4e86\u5f00\u53d1\u73af\u5883\u7684\u5229\u7528\uff0c\u4e8b\u5148\u5df2\u7ecf\u7981\u7528\u4e86iptables \/ SELinux\u3002<br \/>\n\u203b\u4f7f\u7528yum\u5b89\u88c5\u4e86 &#8220;Developer tools&#8221; \u7ec4\uff0c\u5e76\u9002\u65f6\u5f15\u5165\u6240\u9700\u547d\u4ee4\u3002<\/p>\n<h2>\u89d2\u8272\u7684\u521d\u59cb\u5316\u3002<\/h2>\n<p>\u56e0\u4e3a\u662f\u7b2c\u4e00\u6b21\u4f7f\u7528 Role\uff0c\u6240\u4ee5\u4ece\u57fa\u672c\u7684\u89d2\u5ea6\u5f00\u59cb\u3002<br \/>\n\u9996\u5148\uff0c\u521b\u5efa\u4e00\u4e2a Role \u7684\u6a21\u677f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\"># \u9069\u5f53\u306a\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u79fb\u52d5\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/span>\r\n<span class=\"c\"># Role \u7528\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210<\/span>\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">mkdir <\/span>roles\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cd <\/span>roles\r\n<span class=\"c\"># \u5171\u901a\u7528\u306e Role \u3092\u4f5c\u6210(\u5fc5\u9808\u3067\u306f\u3042\u308a\u307e\u305b\u3093)<\/span>\r\n<span class=\"nv\">$ <\/span>ansible-galaxy init common\r\n<span class=\"c\"># apache 2.4 \u7528 Role \u3092\u4f5c\u6210<\/span>\r\n<span class=\"nv\">$ <\/span>ansible-galaxy init web\r\n<span class=\"c\"># \u69cb\u6210\u5185\u5bb9\u78ba\u8a8d<\/span>\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cd<\/span> ..\r\n<span class=\"c\"># tree \u30b3\u30de\u30f3\u30c9\u306f\u5225\u9014\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044(\u6a19\u6e96\u3067\u306f\u3042\u308a\u307e\u305b\u3093)\u3002<\/span>\r\n<span class=\"nv\">$ <\/span>tree\r\n<span class=\"nb\">.<\/span>\r\n\u2514\u2500\u2500 roles\r\n    \u251c\u2500\u2500 web\r\n    \u2502   \u251c\u2500\u2500 defaults\r\n    \u2502   \u2502   \u2514\u2500\u2500 main.yml\r\n    \u2502   \u251c\u2500\u2500 files\r\n    \u2502   \u251c\u2500\u2500 handlers\r\n    \u2502   \u2502   \u2514\u2500\u2500 main.yml\r\n    \u2502   \u251c\u2500\u2500 meta\r\n    \u2502   \u2502   \u2514\u2500\u2500 main.yml\r\n    \u2502   \u251c\u2500\u2500 README.md\r\n    \u2502   \u251c\u2500\u2500 tasks\r\n    \u2502   \u2502   \u2514\u2500\u2500 main.yml\r\n    \u2502   \u251c\u2500\u2500 templates\r\n    \u2502   \u251c\u2500\u2500 tests\r\n    \u2502   \u2502   \u251c\u2500\u2500 inventory\r\n    \u2502   \u2502   \u2514\u2500\u2500 test.yml\r\n    \u2502   \u251c\u2500\u2500 vars\r\n    \u2502   \u2502   \u2514\u2500\u2500 main.yml\r\n    \u2514\u2500\u2500 common\r\n        \u251c\u2500\u2500 <span class=\"o\">(<\/span>\u4ee5\u4e0b\u3001web \u3068\u540c\u4e00\u69cb\u6210<span class=\"o\">)<\/span>\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u6267\u884c\u76ee\u6807\u670d\u52a1\u5668\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u8bbe\u7f6e\u6587\u4ef6\u3002<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5c06\u5b89\u88c5\u5728\u672c\u5730\u670d\u52a1\u5668\u4e0a\uff0c\u6240\u4ee5\u5c06\u8bbe\u7f6e\u4e3alocalhost\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">[webservers]<\/span>\r\n<span class=\"err\">localhost<\/span>\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u7528\u4e8e\u5b89\u88c5\u6267\u884c\u7684 Playbook\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apply common configuration to all nodes<\/span>\r\n  <span class=\"na\">hosts<\/span><span class=\"pi\">:<\/span> <span class=\"s\">all<\/span>\r\n  <span class=\"na\">remote_user<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n\r\n  <span class=\"na\">roles<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">common<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">install and configure the web<\/span>\r\n  <span class=\"na\">hosts<\/span><span class=\"pi\">:<\/span> <span class=\"s\">webservers<\/span>\r\n  <span class=\"na\">remote_user<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n\r\n  <span class=\"na\">roles<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">web<\/span>\r\n<\/code><\/pre>\n<p>\u7ec6\u8282\u4efb\u52a1\u5c06\u5728\u804c\u4f4d\u5185\u7684\u4e2a\u522b\u6587\u4ef6\u4e2d\u6267\u884c\u3002<\/p>\n<p>\u6784\u6210\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nb\">.<\/span>\r\n\u251c\u2500\u2500 hosts\r\n\u251c\u2500\u2500 roles\r\n\u2502   \u251c\u2500\u2500 web\r\n\u2502   \u2514\u2500\u2500 common\r\n\u2514\u2500\u2500 webservers.yml\r\n<\/code><\/pre>\n<p>\u6211\u4eec\u8bd5\u7740\u6267\u884c\u4e00\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>ansible-playbook <span class=\"nt\">-i<\/span> hosts webservers.yml\r\nPLAY <span class=\"o\">[<\/span>apply common configuration to all nodes] <span class=\"k\">*********************************<\/span>\r\n\r\nTASK <span class=\"o\">[<\/span>setup] <span class=\"k\">*******************************************************************<\/span>\r\nok: <span class=\"o\">[<\/span>localhost]\r\n\r\nPLAY <span class=\"o\">[<\/span><span class=\"nb\">install <\/span>and configure the web] <span class=\"k\">*******************************************<\/span>\r\n\r\nTASK <span class=\"o\">[<\/span>setup] <span class=\"k\">*******************************************************************<\/span>\r\nok: <span class=\"o\">[<\/span>localhost]\r\n\r\nPLAY RECAP <span class=\"k\">*********************************************************************<\/span>\r\nlocalhost                  : <span class=\"nv\">ok<\/span><span class=\"o\">=<\/span>2    <span class=\"nv\">changed<\/span><span class=\"o\">=<\/span>0    <span class=\"nv\">unreachable<\/span><span class=\"o\">=<\/span>0    <span class=\"nv\">failed<\/span><span class=\"o\">=<\/span>0\r\n<\/code><\/pre>\n<p>\u6211\u5df2\u786e\u8ba4\u6b63\u5e38\u8fd0\u884c\u3002<\/p>\n<h2>\u4efb\u52a1\u63cf\u8ff0<\/h2>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u7f16\u5199\u7528\u4e8e\u5b89\u88c5 Apache 2.4 \u7684\u4ee3\u7801\u3002<\/p>\n<p>\u6784\u6210\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nb\">.<\/span>\r\n\u251c\u2500\u2500 group_vars\r\n\u2502   \u2514\u2500\u2500 webservers                    <span class=\"c\"># \u5404\u30bf\u30b9\u30af\u3067\u4f7f\u7528\u3059\u308b\u5909\u6570\u5b9a\u7fa9<\/span>\r\n\u251c\u2500\u2500 hosts\r\n\u251c\u2500\u2500 roles\r\n\u2502   \u251c\u2500\u2500 web\r\n\u2502   \u2502   \u251c\u2500\u2500 handlers\r\n\u2502   \u2502   \u2502   \u2514\u2500\u2500 main.yml              <span class=\"c\"># httpd handler \u306e\u5b9a\u7fa9<\/span>\r\n\u2502   \u2502   \u2514\u2500\u2500 tasks\r\n\u2502   \u2502       \u251c\u2500\u2500 main.yml              <span class=\"c\"># \u5404\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb yaml \u306e\u547c\u3073\u51fa\u3057<\/span>\r\n\u2502   \u2502       \u251c\u2500\u2500 install_apr.yml       <span class=\"c\"># apr-devel \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n\u2502   \u2502       \u251c\u2500\u2500 install_apr_util.yml  <span class=\"c\"># apr-util-devel \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n\u2502   \u2502       \u251c\u2500\u2500 install_distcache.yml <span class=\"c\"># distcache \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n\u2502   \u2502       \u2514\u2500\u2500 install_httpd_2_4.yml <span class=\"c\"># httpd \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n\u2502   \u2514\u2500\u2500 common\r\n\u2514\u2500\u2500 webservers.yml\r\n<\/code><\/pre>\n<p>\u9664\u4e86\u6784\u5efa\u548c\u5b89\u88c5httpd\u4e4b\u5916\uff0c\u8fd8\u9700\u8981\u6784\u5efa\u548c\u5b89\u88c5\u5176\u4ed6\u5fc5\u8981\u7684\u5e93\u3002<\/p>\n<p>\u7ec4\u53d8\u91cf\/\u7f51\u7edc\u670d\u52a1\u5668<\/p>\n<p>\u6211\u6b63\u5728\u5b9a\u4e49\u5728\u6bcf\u4e2a\u4efb\u52a1\u4e2d\u4f7f\u7528\u7684\u53d8\u91cf\u3002<br \/>\n\u8bf7\u53c2\u8003\u6ce8\u91ca\u4e2d\u7684\u5b9a\u4e49\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># webservers Variables<\/span>\r\n\r\n<span class=\"na\">apache_2_4<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"c1\"># \u8d77\u52d5\u30e6\u30fc\u30b6<\/span>\r\n  <span class=\"na\">user_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apache<\/span>\r\n  <span class=\"c1\"># \u8d77\u52d5\u30b0\u30eb\u30fc\u30d7<\/span>\r\n  <span class=\"na\">group_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apache<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">work_dir<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/usr\/local\/src<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u30d3\u30eb\u30c9\u5148\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">rpmbuild_dir<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/root\/rpmbuild<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 URL<\/span>\r\n  <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/ftp.tsukuba.wide.ad.jp\/software\/apache\/\/httpd\/httpd-2.4.18.tar.bz2<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">src_filename<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd-2.4.18.tar.bz2<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">rpm_filenames<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">httpd-2.4.18-1.x86_64.rpm<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">httpd-tools-2.4.18-1.x86_64.rpm<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">mod_ssl-2.4.18-1.x86_64.rpm<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u914d\u7f6e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">rpm_directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/usr\/local\/src\/httpd<\/span>\r\n  <span class=\"c1\"># \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9<\/span>\r\n  <span class=\"na\">conf_file<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/etc\/httpd\/conf\/httpd.conf<\/span>\r\n\r\n<span class=\"na\">apr<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 URL<\/span>\r\n  <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/archive.apache.org\/dist\/apr\/apr-1.5.2.tar.bz2<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">src_filename<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-1.5.2.tar.bz2<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">rpm_filenames<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">apr-1.5.2-1.x86_64.rpm<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">apr-devel-1.5.2-1.x86_64.rpm<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u914d\u7f6e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">rpm_directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/usr\/local\/src\/apr<\/span>\r\n\r\n<span class=\"na\">apr_util<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 URL<\/span>\r\n  <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/archive.apache.org\/dist\/apr\/apr-util-1.5.2.tar.bz2<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">src_filename<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util-1.5.2.tar.bz2<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">rpm_filenames<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">apr-util-1.5.2-1.x86_64.rpm<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">apr-util-devel-1.5.2-1.x86_64.rpm<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u914d\u7f6e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">rpm_directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/usr\/local\/src\/apr-util<\/span>\r\n\r\n<span class=\"na\">distcache<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 URL<\/span>\r\n  <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s\">https:\/\/archive.fedoraproject.org\/pub\/archive\/fedora\/linux\/releases\/18\/Everything\/source\/SRPMS\/d\/distcache-1.4.5-23.src.rpm<\/span>\r\n  <span class=\"c1\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">src_filename<\/span><span class=\"pi\">:<\/span> <span class=\"s\">distcache-1.4.5-23.src.rpm<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u540d<\/span>\r\n  <span class=\"na\">rpm_filenames<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">distcache-1.4.5-23.x86_64.rpm<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">distcache-devel-1.4.5-23.x86_64.rpm<\/span>\r\n  <span class=\"c1\"># RPM \u30d5\u30a1\u30a4\u30eb\u914d\u7f6e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">rpm_directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/usr\/local\/src\/distcache<\/span>\r\n<\/code><\/pre>\n<p>\u4efb\u52a1\/\u4e3b\u8981.yml<\/p>\n<p>\u5728 main.yml \u6587\u4ef6\u4e2d\uff0c\u6211\u4eec\u8fdb\u884c\u4e86\u6bcf\u4e2a\u4efb\u52a1\u7684\u52a0\u8f7d\u3002<br \/>\n\u6bcf\u4e2a\u6587\u4ef6\u90fd\u8bb0\u5f55\u4e86\u4efb\u52a1\u7684\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">include<\/span><span class=\"pi\">:<\/span> <span class=\"s\">install_apr.yml<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">include<\/span><span class=\"pi\">:<\/span> <span class=\"s\">install_apr_util.yml<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">include<\/span><span class=\"pi\">:<\/span> <span class=\"s\">install_distcache.yml<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">include<\/span><span class=\"pi\">:<\/span> <span class=\"s\">install_httpd_2_4.yml<\/span>\r\n<\/code><\/pre>\n<p>\u5b89\u88c5_apr.yml \/ \u5b89\u88c5_apr-util<\/p>\n<p>apr\/apr-util\u662f\u6784\u5efahttpd\u6240\u5fc5\u9700\u7684\u5e93\u3002<br \/>\n\u901a\u5e38\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4f1a\u4ece\u6e90\u4ee3\u7801\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<p>\u30fb\u4e0b\u8f7d\u6e90\u6587\u4ef6<br \/>\n\u30fb\u89e3\u538b\u7f29<br \/>\n\u30fb\u914d\u7f6e\/\u7f16\u8bd1\/\u5b89\u88c5<\/p>\n<p>\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u5c06 make \u7684\u90e8\u5206\u66ff\u6362\u4e3a\u9002\u7528\u4e8e rpm \u5305\u5904\u7406\u7684\u65b9\u6cd5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n<span class=\"c1\"># build and install apr-devel<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr \u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/span>\r\n  <span class=\"na\">get_url<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr.url<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5316(rpm)<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">rpmbuild<\/span> <span class=\"s\">-ta<\/span> <span class=\"s\">--clean<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">apr.src_filename<\/span> <span class=\"s\">}}\"<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">apr.rpm_filenames.1<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr \u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e\u7528\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4f5c\u6210<\/span>\r\n  <span class=\"na\">file<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">directory<\/span>\r\n    <span class=\"na\">owner<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">group<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">mode<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0755<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">find<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpmbuild_dir<\/span> <span class=\"s\">}}<\/span> <span class=\"s\">-name<\/span> <span class=\"s\">'*.rpm'<\/span> <span class=\"s\">|<\/span> <span class=\"s\">xargs<\/span> <span class=\"s\">-i<\/span> <span class=\"s\">mv<\/span> <span class=\"s\">{}<\/span> <span class=\"s\">.\"<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">apr.rpm_filenames.1<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-devel \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n  <span class=\"na\">yum<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">item<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">present<\/span>\r\n  <span class=\"na\">with_items<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr.rpm_filenames<\/span> <span class=\"s\">}}\"<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n<span class=\"c1\"># build and install apr-util-devel<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util \u306e\u30d3\u30eb\u30c9\u306b\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n  <span class=\"na\">yum<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">item<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">present<\/span>\r\n  <span class=\"na\">with_items<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">expat-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">db4-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">postgresql-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">mysql-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">sqlite-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">unixODBC-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">nss-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">epel-release<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">libuuid-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">openldap-devel<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util \u306e\u30d3\u30eb\u30c9\u306b\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb(epel)<\/span>\r\n  <span class=\"na\">yum<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">freetds-devel<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">present<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util \u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/span>\r\n  <span class=\"na\">get_url<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr_util.url<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5316(rpm)<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">rpmbuild<\/span> <span class=\"s\">-ta<\/span> <span class=\"s\">--clean<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">apr_util.src_filename}}\"<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr_util.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">apr_util.rpm_filenames.1<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util \u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e\u7528\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4f5c\u6210<\/span>\r\n  <span class=\"na\">file<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr_util.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">directory<\/span>\r\n    <span class=\"na\">owner<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">group<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">mode<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0755<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">find<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpmbuild_dir<\/span> <span class=\"s\">}}<\/span> <span class=\"s\">-name<\/span> <span class=\"s\">'*.rpm'<\/span> <span class=\"s\">|<\/span> <span class=\"s\">xargs<\/span> <span class=\"s\">-i<\/span> <span class=\"s\">mv<\/span> <span class=\"s\">{}<\/span> <span class=\"s\">.\"<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr_util.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr_util.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">apr_util.rpm_filenames.1<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apr-util-devel \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n  <span class=\"na\">yum<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr_util.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">item<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">present<\/span>\r\n  <span class=\"na\">with_items<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apr_util.rpm_filenames<\/span> <span class=\"s\">}}\"<\/span>\r\n<\/code><\/pre>\n<p>\u5b89\u88c5distcache.yml<\/p>\n<p>\u4ee5\u4e0b\u662f\u5b89\u88c5 distcache \u8fd9\u4e2a\u5fc5\u8981\u7684\u5e93\u6240\u9700\u7684 APR \u7684\u6b65\u9aa4\u3002<br \/>\n\u540c\u6837\uff0c\u6211\u4eec\u4e5f\u5c06\u4ece\u6e90\u7801\u521b\u5efa\u4e00\u4e2a\u9002\u7528\u4e8e RPM \u7684\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n<span class=\"c1\"># build and install distcache-devel<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">distcache \u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/span>\r\n  <span class=\"na\">get_url<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">distcache.url<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">distcache \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5316(rpm)<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">rpmbuild<\/span> <span class=\"s\">--rebuild<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">distcache.src_filename<\/span> <span class=\"s\">}}\"<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">distcache.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">distcache.rpm_filenames.1<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">distcache \u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e\u7528\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">file<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">distcache.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">directory<\/span>\r\n    <span class=\"na\">owner<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">group<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">mode<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0755<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">distcache \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">find<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpmbuild_dir<\/span> <span class=\"s\">}}<\/span> <span class=\"s\">-name<\/span> <span class=\"s\">'*.rpm'<\/span> <span class=\"s\">|<\/span> <span class=\"s\">xargs<\/span> <span class=\"s\">-i<\/span> <span class=\"s\">mv<\/span> <span class=\"s\">{}<\/span> <span class=\"s\">.\"<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">distcache.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">distcache.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">distcache.rpm_filenames.1<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">distcache-devel \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n  <span class=\"na\">yum<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">distcache.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">item<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">present<\/span>\r\n  <span class=\"na\">with_items<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">distcache.rpm_filenames<\/span> <span class=\"s\">}}\"<\/span>\r\n<\/code><\/pre>\n<p>\u5b89\u88c5_httpd_2_4.yml.<\/p>\n<p>\u5728\u786e\u4fdd\u6240\u6709\u5fc5\u8981\u7684\u5e93\u90fd\u51c6\u5907\u597d\u4e4b\u540e\uff0c\u6211\u4eec\u6765\u63cf\u8ff0\u5b89\u88c5 Apache \u7684\u6b65\u9aa4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n<span class=\"c1\"># build and install httpd_2.4<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u30d3\u30eb\u30c9\u306b\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n  <span class=\"na\">yum<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">item<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">present<\/span>\r\n  <span class=\"na\">with_items<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">zlib-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">libselinux-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">pcre-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">lua-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">libxml2-devel<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">openssl-devel<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd \u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/span>\r\n  <span class=\"na\">get_url<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.url<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5316(rpm)<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rpmbuild -ta --clean \"{{ apache_2_4.src_filename }}\"<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.work_dir<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">apache_2_4.rpm_filenames.0<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd \u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e\u7528\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\r\n  <span class=\"na\">file<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">directory<\/span>\r\n    <span class=\"na\">owner<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">group<\/span><span class=\"pi\">:<\/span> <span class=\"s\">root<\/span>\r\n    <span class=\"na\">mode<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0755<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u914d\u7f6e<\/span>\r\n  <span class=\"na\">shell<\/span><span class=\"pi\">:<\/span> <span class=\"s\">find \"{{ apache_2_4.rpmbuild_dir }}\" -name '*.rpm' | xargs -i mv {} .<\/span>\r\n  <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">chdir<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpm_directory<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">creates<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">apache_2_4.rpm_filenames.0<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\r\n  <span class=\"na\">yum<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpm_directory<\/span> <span class=\"s\">}}\/{{<\/span> <span class=\"s\">item<\/span> <span class=\"s\">}}\"<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">present<\/span>\r\n  <span class=\"na\">with_items<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.rpm_filenames<\/span> <span class=\"s\">}}\"<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\u8d77\u52d5\u30e6\u30fc\u30b6\u30fb\u30b0\u30eb\u30fc\u30d7\u8a2d\u5b9a<\/span>\r\n  <span class=\"na\">lineinfile<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.conf_file}}\"<\/span>\r\n    <span class=\"na\">backrefs<\/span><span class=\"pi\">:<\/span> <span class=\"s\">yes<\/span>\r\n    <span class=\"na\">regexp<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">{{<\/span> <span class=\"s\">item.regexp}}'<\/span>\r\n    <span class=\"na\">line<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">{{<\/span> <span class=\"s\">item.line<\/span> <span class=\"s\">}}'<\/span>\r\n  <span class=\"na\">with_items<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">regexp<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">^User.*\"<\/span>\r\n      <span class=\"na\">line<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">User<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.user_name}}\"<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">regexp<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">^Group.*\"<\/span>\r\n      <span class=\"na\">line<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">Group<\/span> <span class=\"s\">{{<\/span> <span class=\"s\">apache_2_4.group_name}}\"<\/span>\r\n  <span class=\"na\">notify<\/span><span class=\"pi\">:<\/span> <span class=\"s\">restart httpd<\/span>\r\n\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd \u306e\u30b5\u30fc\u30d3\u30b9\u8d77\u52d5\u30fb\u81ea\u52d5\u8d77\u52d5\u8a2d\u5b9a<\/span>\r\n  <span class=\"na\">service<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">started<\/span>\r\n    <span class=\"na\">enabled<\/span><span class=\"pi\">:<\/span> <span class=\"s\">yes<\/span>\r\n<\/code><\/pre>\n<p>\u5904\u7406\u7a0b\u5e8f\/\u4e3b\u8981.yml<\/p>\n<p>\u5c06 httpd \u7684\u91cd\u542f\u64cd\u4f5c\u5728 handler \u4e2d\u8fdb\u884c\u8bb0\u5f55\uff0c\u8be5\u64cd\u4f5c\u4f1a\u5728\u6700\u540e\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u4e4b\u540e\u6267\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">---<\/span>\r\n<span class=\"c1\"># handlers file for web<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">restart httpd<\/span>\r\n  <span class=\"na\">service<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">httpd<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">restarted<\/span>\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0a\u662f\u4efb\u52a1\u7684\u63cf\u8ff0\u3002<\/p>\n<h2>\u6267\u884cPlaybook<\/h2>\n<p>\u8ba9\u6211\u4eec\u6267\u884c\u6240\u5236\u4f5c\u7684Playbook\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>ansible-playbook <span class=\"nt\">-i<\/span> hosts webservers.yml\r\n\u30fb\u30fb\u30fb\r\nPLAY RECAP <span class=\"k\">*********************************************************************<\/span>\r\nlocalhost                  : <span class=\"nv\">ok<\/span><span class=\"o\">=<\/span>32   <span class=\"nv\">changed<\/span><span class=\"o\">=<\/span>26   <span class=\"nv\">unreachable<\/span><span class=\"o\">=<\/span>0    <span class=\"nv\">failed<\/span><span class=\"o\">=<\/span>0\r\n<span class=\"c\"># \u78ba\u8a8d\u306e\u70ba\u3001\u518d\u5b9f\u884c<\/span>\r\n<span class=\"nv\">$ <\/span>ansible-playbook <span class=\"nt\">-i<\/span> hosts webservers.yml\r\n\u30fb\u30fb\u30fb\r\nPLAY RECAP <span class=\"k\">*********************************************************************<\/span>\r\nlocalhost                  : <span class=\"nv\">ok<\/span><span class=\"o\">=<\/span>31   <span class=\"nv\">changed<\/span><span class=\"o\">=<\/span>0    <span class=\"nv\">unreachable<\/span><span class=\"o\">=<\/span>0    <span class=\"nv\">failed<\/span><span class=\"o\">=<\/span>0\r\n<span class=\"c\"># Web \u30a2\u30af\u30bb\u30b9\u78ba\u8a8d<\/span>\r\n<span class=\"nv\">$ <\/span>curl http:\/\/localhost\/\r\n&lt;html&gt;&lt;body&gt;&lt;h1&gt;It works!&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\r\n<\/code><\/pre>\n<p>\u8bf7\u95ee\u662f\u5426\u80fd\u591f\u6b63\u5e38\u6267\u884c\uff1f<br \/>\n\u60a8\u53ef\u4ee5\u590d\u5236\u4e00\u6b21\u521b\u5efa\u7684RPM\u6587\u4ef6\uff0c\u5e76\u53ef\u4ee5\u901a\u8fc7yum\u6a21\u5757\u7684\u5b9a\u4e49\u6765\u7f16\u5199Playbook\u3002<br \/>\n\u6b64\u5916\uff0c\u60a8\u8fd8\u53ef\u4ee5\u5c06httpd.conf\u7684\u526f\u672c\u653e\u7f6e\u5728templates\u4e2d\u8fdb\u884c\u7f16\u8f91\uff0c\u5e76\u901a\u8fc7vars\u5b9a\u4e49\u6bcf\u4e2a\u73af\u5883\u7684\u53d8\u91cf\uff0c\u4ece\u800c\u53ef\u4ee5\u6839\u636e\u4e0d\u540c\u73af\u5883\u6765\u7ba1\u7406\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<p>\u5c3d\u7ba1\u6709\u8bb8\u591a\u4eba\u8f6c\u5411\u4f7f\u7528nginx\uff0c\u4f46\u6211\u4eec\u53ea\u5b89\u88c5\u4e86\u57fa\u672c\u7684Apache\u670d\u52a1\u5668\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u4f7f\u7528Ansible\u7684Playbook\u6765\u5b89\u88c5Apache 2.4\uff0c\u4ee5\u4e0b\u662f\u6211\u8bb0\u5f55\u7684\u5907\u5fd8\u5f55\u3002 \u8fd9\u6b21\u6211\u4eec\u5c06\u6e90\u6587\u4ef6\u6253\u5305 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36883","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ansible-\u8fdb\u884c\u5b89\u88c5\uff08apache-2-4\uff09\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09\" \/>\n<meta property=\"og:description\" content=\"\u6211\u4f7f\u7528Ansible\u7684Playbook\u6765\u5b89\u88c5Apache 2.4\uff0c\u4ee5\u4e0b\u662f\u6211\u8bb0\u5f55\u7684\u5907\u5fd8\u5f55\u3002 \u8fd9\u6b21\u6211\u4eec\u5c06\u6e90\u6587\u4ef6\u6253\u5305 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ansible-\u8fdb\u884c\u5b89\u88c5\uff08apache-2-4\uff09\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-01T04:02:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T16:03:15+00:00\" \/>\n<meta name=\"author\" content=\"\u97f5, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u97f5, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/\",\"name\":\"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-12-01T04:02:32+00:00\",\"dateModified\":\"2024-05-03T16:03:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\",\"name\":\"\u97f5, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"caption\":\"\u97f5, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ansible-\u8fdb\u884c\u5b89\u88c5\uff08apache-2-4\uff09\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09","og_description":"\u6211\u4f7f\u7528Ansible\u7684Playbook\u6765\u5b89\u88c5Apache 2.4\uff0c\u4ee5\u4e0b\u662f\u6211\u8bb0\u5f55\u7684\u5907\u5fd8\u5f55\u3002 \u8fd9\u6b21\u6211\u4eec\u5c06\u6e90\u6587\u4ef6\u6253\u5305 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ansible-\u8fdb\u884c\u5b89\u88c5\uff08apache-2-4\uff09\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-12-01T04:02:32+00:00","article_modified_time":"2024-05-03T16:03:15+00:00","author":"\u97f5, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u97f5, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/","name":"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-12-01T04:02:32+00:00","dateModified":"2024-05-03T16:03:15+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528 Ansible \u8fdb\u884c\u5b89\u88c5\uff08Apache 2.4\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e","name":"\u97f5, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","caption":"\u97f5, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ansible-%e8%bf%9b%e8%a1%8c%e5%ae%89%e8%a3%85%ef%bc%88apache-2-4%ef%bc%89\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=36883"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36883\/revisions"}],"predecessor-version":[{"id":94904,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36883\/revisions\/94904"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=36883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=36883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=36883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}