{"id":105,"date":"2004-08-09T08:30:34","date_gmt":"2004-08-09T06:30:34","guid":{"rendered":""},"modified":"2007-07-03T09:39:29","modified_gmt":"2007-07-03T07:39:29","slug":"sun-solaris-zones","status":"publish","type":"post","link":"http:\/\/www.lookit.org\/blog\/?p=105","title":{"rendered":"Sun Solaris Zones"},"content":{"rendered":"<p>Un tutorial sur les ZONES de Solaris 10<br \/><!--more--><br \/>http:\/\/www.blastwave.org\/articles\/DMC-0002\/index.html<\/p>\n<p>How to setup your very own zone!<\/p>\n<p>Creating zone complete and not with shared directory : zonecfg -z name create -b<\/p>\n<p>Installing package on zone : pkgadd -g NAME : install it only on globale zone &#8230; pkgadd NAME : on all zones.<\/p>\n<p>The first step here is to get a piece of hardware to test with. You can use an Intel or AMD Opteron unit or a UltraSparc server. For my testing and playing I choose one of many Netra T1 UltraSparc units that I have in a rack. I download the CDROM ISO files from Sun. I then use lofiadm and a few other steps to create a jumpstart server for network booting. Simply put, I did the entire process remotely, from home, with a laptop and a modem. Like I said, Solaris is really slick.<\/p>\n<p>Most admins that work with Solaris are very aware of how to boot a server from across the net and perform an install. That is what I did.<\/p>\n<p>After the initial install of Solaris 10 build 51 I had the following config here at blastwave.org :<br \/>bash-2.05b# uname -a<br \/>SunOS zoner 5.10 s10_51 sun4u sparc SUNW,UltraSPARC-IIi-cEngine<\/p>\n<p>bash-2.05b# prtconf -v | grep Memory<br \/>Memory size: 320 Megabytes<\/p>\n<p>The file system layout looks like so :<\/p>\n<p>bash-2.05b# df -ak<br \/>Filesystem            kbytes    used   avail capacity  Mounted on<br \/>\/dev\/dsk\/c0t0d0s0     371137   74357  259667    23%    \/<br \/>\/devices                   0       0       0     0%    \/devices<br \/>\/dev\/dsk\/c0t0d0s6    3009594 1708386 1241017    58%    \/usr<br \/>proc                       0       0       0     0%    \/proc<br \/>mnttab                     0       0       0     0%    \/etc\/mnttab<br \/>fd                         0       0       0     0%    \/dev\/fd<br \/>\/dev\/dsk\/c0t0d0s1     740495   73752  607504    11%    \/var<br \/>swap                 1262208      48 1262160     1%    \/var\/run<br \/>swap                 1262160       0 1262160     0%    \/tmp<br \/>\/dev\/dsk\/c0t0d0s5    1375228     693 1319526     1%    \/opt<br \/>\/dev\/dsk\/c0t0d0s7    2055705      30 1994004     1%    \/export\/home<br \/>-hosts                     0       0       0     0%    \/net<br \/>auto_home                  0       0       0     0%    \/home<br \/>zoner:vold(pid489)         0       0       0     0%    \/vol<\/p>\n<p>That would be because I chose an old fashioned way of doing things and I split up my basic filesystems across the primary boot disk.<\/p>\n<p>bash-2.05b# isainfo -v<br \/>64-bit sparcv9 applications<br \/>32-bit sparc applications<\/p>\n<p>$&shy;&shy;&shy;&shy; ifconfig -a<br \/>lo0: flags=1000849 mtu 8232 index 1<br \/>        inet 127.0.0.1 netmask ff000000<br \/>hme0: flags=1000843 mtu 1500 index 2<br \/>        inet 192.168.35.200 netmask ffffff00 broadcast 192.168.35.255<br \/>hme1: flags=1000843 mtu 1500 index 3<br \/>        inet 192.168.35.201 netmask ffffff00 broadcast 192.168.35.255<\/p>\n<p>bash-2.05b# psrinfo -v<br \/>Status of virtual processor 0 as of: 02\/26\/2004 10:30:42<br \/>  on-line since 02\/25\/2004 23:13:02.<br \/>  The sparcv9 processor operates at 360 MHz,<br \/>        and has a sparcv9 floating point processor.<\/p>\n<p>Notice anything new there? It says &quot;virtual processor&quot;. Virtual? Seems pretty real to me. Toto, I don&#39;t think we&#39;re in Kansas anymore.<\/p>\n<p>No indeed. We are, in fact, in a the &quot;global zone&quot; of Solaris 10. The zoneadm tool confirms this :<\/p>\n<p>bash-2.05b# zoneadm list -vc<br \/>  ID NAME             STATUS         PATH<br \/>   0 global           running        \/<\/p>\n<p>It is here in the new global zone that we will create our other zones for applications and for users. If we need to isolate an application or a user group from the rest of the world then we simply create a zone for them and then let them run. Simple concept but how do we do it?<\/p>\n<p>The first thing that I do is create a filesystem area for the new zone to reside in. I also mount it under a mount point named \/zone\/1 and I ensure that only the root user has access to it thus :<\/p>\n<p>$&shy;&shy;&shy;&shy; ls -lap \/zone<br \/>total 8<br \/>drwxr-xr-x   3 root     other        512 Feb 26 12:42 .\/<br \/>drwxr-xr-x  22 root     root         512 Feb 26 12:42 ..\/<br \/>drwx&#8212;&#8212;   5 root     root         512 Feb 26 13:27 1\/<\/p>\n<p>We use zonecfg to create a new zone. Do this from the global zone and as the root user.<\/p>\n<p>bash-2.05b# zonecfg -z zone1<br \/>zone1: No such zone configured<br \/>Use &#39;create&#39; to begin configuring a new zone.<br \/>zonecfg:zone1&gt; create<br \/>zonecfg:zone1&gt; set zonepath=\/zone\/1<br \/>zonecfg:zone1&gt; set autoboot=true<br \/>zonecfg:zone1&gt; add net<br \/>zonecfg:zone1:net&gt; set address=192.168.35.210<br \/>zonecfg:zone1:net&gt; set physical=hme1<br \/>zonecfg:zone1:net&gt; end<br \/>zonecfg:zone1&gt; info<br \/>zonepath: \/zone\/1<br \/>autoboot: true<br \/>pool:<br \/>inherit-pkg-dir:<br \/>        dir: \/lib<br \/>inherit-pkg-dir:<br \/>        dir: \/platform<br \/>inherit-pkg-dir:<br \/>        dir: \/sbin<br \/>inherit-pkg-dir:<br \/>        dir: \/usr<br \/>net:<br \/>        address: 192.168.35.210<br \/>        physical: hme1<br \/>zonecfg:zone1&gt; verify<br \/>zonecfg:zone1&gt; commit<br \/>zonecfg:zone1&gt; ^D<\/p>\n<p>Simple really. The zonecfg tool is interactive and I specified that I want to &quot;create&quot; a zone. The filesystem that I created is the new &quot;zonepath&quot; and I want this new virtual server to boot along with the global zone when the &quot;real&quot; server boots. Who can tell what is &quot;real&quot; and what isn&#39;t? It won&#39;t matter anymore. I also set the ip address for the zone as well as the interface to bind to. Finally I asked for zonecfg to show me what I just did via the simple &quot;info&quot; command. I then used &quot;verify&quot; and &quot;commit&quot; to ensure that the config is complete. That is all. Nothing fancy.<\/p>\n<p>I then used zonecfg and zoneadm to verify that in fact what I had just done was in fact, er, well, done. Really I just like playing with new technology and so will you!<\/p>\n<p>bash-2.05b# zonecfg -z zone1 info<br \/>zonepath: \/zone\/1<br \/>autoboot: true<br \/>pool:<br \/>inherit-pkg-dir:<br \/>        dir: \/lib<br \/>inherit-pkg-dir:<br \/>        dir: \/platform<br \/>inherit-pkg-dir:<br \/>        dir: \/sbin<br \/>inherit-pkg-dir:<br \/>        dir: \/usr<br \/>net:<br \/>        address: 192.168.35.210<br \/>        physical: hme1<\/p>\n<p>bash-2.05b# zoneadm list -vc<br \/>  ID NAME             STATUS         PATH<br \/>   0 global           running        \/<br \/>   &#8211; zone1            configured     \/zone\/1<\/p>\n<p>The next step to perform is to &quot;install&quot; the zone.<\/p>\n<p>bash-2.05b# zoneadm -z zone1 install<br \/>Preparing to install zone .<br \/>Creating list of files to copy from the global zone.<br \/>Copying &lt;2521&gt; files to the zone.<br \/>Initializing zone product registry.<br \/>Determining zone package initialization order.<br \/>Preparing to initialize &lt;808&gt; packages on the zone.<br \/>Initializing package &lt;7&gt; of &lt;808&gt;: percent complete: 0%<br \/>.<br \/>.  &lt; this goes on for some time &gt;<br \/>.<br \/>Initialized &lt;808&gt; packages on zone.<br \/>Successfully initialized zone .<\/p>\n<p>bash-2.05b# df -ak \/zone\/1<br \/>Filesystem            kbytes    used   avail capacity  Mounted on<br \/>\/dev\/dsk\/c0t1d0s0    1972734   76238 1797860     5%    \/zone\/1<\/p>\n<p>Again I use zoneadm to see the results of my actions :<\/p>\n<p>bash-2.05b# zoneadm list -vc<br \/>  ID NAME             STATUS         PATH<br \/>   0 global           running        \/<br \/>   &#8211; zone1            installed      \/zone\/1<\/p>\n<p>See that? The STATUS is now &quot;installed&quot;.<\/p>\n<p>Now lets boot that new virtual server that we created!<\/p>\n<p>bash-2.05b# zoneadm -z zone1 boot<br \/>bash-2.05b# zoneadm list -vc<br \/>  ID NAME             STATUS         PATH<br \/>   0 global           running        \/<br \/>   2 zone1            running        \/zone\/1<\/p>\n<p>I now have a virtual server running? Really? Let&#39;s ping it :<\/p>\n<p>bash-2.05b# ping 192.168.35.210<br \/>192.168.35.210 is alive<\/p>\n<p>For our further enjoyment let&#39;s nmap port scan it from another server :<\/p>\n<p># nmap -sS -O -v -v -P0 -T Aggressive -n -oN \/tmp\/zone1.log zone1<\/p>\n<p>Starting nmap 3.20 ( www.insecure.org\/nmap\/ ) at 2004-02-26 14:12 EST<br \/>Host 192.168.35.210 appears to be up &#8230; good.<br \/>Initiating SYN Stealth Scan against 192.168.35.210 at 14:12<br \/>The SYN Stealth Scan took 443 seconds to scan 1611 ports.<br \/>Warning:  OS detection will be MUCH less reliable because we did not find at least 1 <\/p>\n<p>open and 1 closed TCP port<br \/>All 1611 scanned ports on 192.168.35.210 are: closed<br \/>Too many fingerprints match this host for me to give an accurate OS guess<br \/>TCP\/IP fingerprint:<br \/>SInfo(V=3.20%P=sparc-sun-solaris2.8%D=2\/26%Time=403E474B%O=-1%C=1)<br \/>T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)<br \/>T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)<br \/>T7(Resp=N)<br \/>PU(Resp=N)<\/p>\n<p>Nmap run completed &#8212; 1 IP address (1 host up) scanned in 551.944 seconds<\/p>\n<p>As far as anyone can tell, there is a server out there at the required IP address but how do we actually use it?<\/p>\n<p>We now need to login to the zone console via zlogin. When we do we will be presented with the opportunity to &quot;setup&quot; the new server as if we were doing an install only there really isn&#39;t much to install or setup for that matter. The hard work has been done for us :<\/p>\n<p>I now will use zlogin to login to the zone1 console and I will specify<\/p>\n<p># zlogin -C -e@ zone1<br \/>[Connected to zone &#39;zone1&#39; console]<br \/>&gt;&gt;&gt; DON&#39;T FORGET TO ANSWER WITH &quot;ECHAP SHIFT + number &quot; &lt;&lt;&lt;&lt; equal as F2<\/p>\n<p>This is where we are presented with an install sequence that is familiar to all Solaris admins. After you answer the basic config questions for your new virtual server you will see that the virtual server boots :<\/p>\n<p>[NOTICE: zone rebooting]<\/p>\n<p>Version s10_51 64-bit<br \/>Copyright 1983-2004 Sun Microsystems, Inc.  All rights reserved.<br \/>Use is subject to license terms.<br \/>Hostname: zone1<br \/>The system is coming up.  Please wait.<br \/>starting rpc services: rpcbind done.<br \/>syslog service starting<br \/>                     SunOS Release 5.10 Ver<br \/>prtconf: devinfo facility not available<br \/>prtconf: devinfo facility not available<br \/>prtconf: cannot open \/dev\/openprom: No such file or directory<br \/>prtconf: cannot open \/dev\/openprom: No such file or directory<br \/>prtconf: devinfo facility not available<br \/>Creating new rsa public\/private host key pair<br \/>Creating new dsa public\/private host key pair<br \/>The system is ready.<\/p>\n<p>zone1 console login:<\/p>\n<p>zone1 console login: root<br \/>Password:<\/p>\n<p>Feb 27 09:03:55 zone1 login: ROOT LOGIN \/dev\/console<br \/>Sun Microsystems Inc.   SunOS 5.10      s10_51  May 2004<br \/>#<\/p>\n<p>There you have it! A new virtual server has been born. This new server is neatly wrapped inside the global zone. I don&#39;t have another way to describe it really. Perhaps it is &quot;beside&quot; or &quot;outside&quot;. Does it matter? Not really. The new server has a hostname zone1 ( for the sake of simplicity ) but I could have made the main hostname jupiter and the new zone io or europa. The new server is reachable via the net. I run ps -ef and see the usual suspects in place and running :<\/p>\n<p># ps -ef<br \/>     UID   PID  PPID   C    STIME TTY         TIME CMD<br \/>    root  7530  7424   0 09:01:46 ?           0:00 \/usr\/sbin\/inetd -s<br \/>  daemon  7451  7424   0 09:01:45 ?           0:00 \/usr\/lib\/crypto\/kcfd<br \/>    root  7516  7424   0 09:01:46 ?           0:00 \/usr\/lib\/autofs\/automountd<br \/>    root  7667  7653   0 09:04:18 console     0:00 ps -ef<br \/>    root  7424  7424   0 09:01:33 ?           0:00 zsched<br \/>    root  7521  7424   0 09:01:46 ?           0:00 \/usr\/sbin\/cron<br \/>    root  7515  7424   0 09:01:46 ?           0:00 \/usr\/sbin\/syslogd<br \/>    root  7653  7427   0 09:03:30 console     0:00 -sh<br \/>    root  7588  7424   0 09:02:49 ?           0:00 \/usr\/lib\/im\/htt -port 9010 -syslog -message_locale C<br \/>    root  7427  7424   0 09:01:44 ?           0:00 init<br \/>    root  7652  7427   0 09:03:30 ?           0:00 \/usr\/lib\/saf\/sac -t 300<br \/>    root  7526  7424   0 09:01:46 ?           0:00 \/usr\/sbin\/nscd<br \/>    root  7656  7652   0 09:03:30 ?           0:00 \/usr\/lib\/saf\/ttymon<br \/>    root  7641  7424   0 09:02:52 ?           0:01 \/usr\/sfw\/sbin\/snmpd<br \/>    root  7568  7424   0 09:02:49 ?           0:00 \/usr\/lib\/utmpd<br \/>   smmsp  7658  7424   0 09:03:49 ?           0:00 \/usr\/lib\/sendmail -Ac -q15m<br \/>  daemon  7476  7424   0 09:01:45 ?           0:00 \/usr\/sbin\/rpcbind<br \/>    root  7605  7588   0 09:02:50 ?           0:00 htt_server -port 9010 -syslog -message_locale C<br \/>    root  7636  7424   0 09:02:51 ?           0:00 \/usr\/dt\/bin\/dtlogin -daemon<br \/>    root  7657  7424   0 09:03:49 ?           0:00 \/usr\/lib\/sendmail -bd -q15m<br \/>    root  7655  7424   0 09:03:30 ?           0:00 \/usr\/lib\/ssh\/sshd<br \/>#<\/p>\n<p>The filesystems look a bit odd in that they are not actually associated with disk devices or metadevices :<\/p>\n<p># df -ak<br \/>Filesystem            kbytes    used   avail capacity  Mounted on<br \/>\/                    1972734   76154 1797944     5%    \/<br \/>\/dev                 1972734   76154 1797944     5%    \/dev<br \/>\/lib                  371137   74367  259657    23%    \/lib<br \/>\/platform             371137   74367  259657    23%    \/platform<br \/>\/sbin                 371137   74367  259657    23%    \/sbin<br \/>\/usr                 3009594 1708386 1241017    58%    \/usr<br \/>proc                       0       0       0     0%    \/proc<br \/>mnttab                     0       0       0     0%    \/etc\/mnttab<br \/>auto_home                  0       0       0     0%    \/home<br \/>-hosts                     0       0       0     0%    \/net<br \/>swap                 1220032       0 1220032     0%    \/tmp<br \/>swap                 1220064      32 1220032     1%    \/var\/run<br \/>fd                         0       0       0     0%    \/dev\/fd<br \/>#<\/p>\n<p>The rest of the config of this virtual server is not surprising at all :<\/p>\n<p># uname -a<br \/>SunOS zone1 5.10 s10_51 sun4u sparc SUNW,UltraSPARC-IIi-cEngine<br \/># psrinfo -v<br \/>Status of virtual processor 0 as of: 02\/27\/2004 09:08:06<br \/>  on-line since 02\/26\/2004 11:48:33.<br \/>  The sparcv9 processor operates at 360 MHz,<br \/>        and has a sparcv9 floating point processor.<br \/># isainfo -v<br \/>64-bit sparcv9 applications<br \/>32-bit sparc applications<br \/># prtconf -v<br \/>System Configuration:  Sun Microsystems  sun4u<br \/>Memory size: 320 Megabytes<br \/>System Peripherals (Software Nodes):<\/p>\n<p>prtconf: devinfo facility not available<\/p>\n<p># ifconfig -a<br \/>lo0:1: flags=1000849 mtu 8232 index 1<br \/>        inet 127.0.0.1 netmask ff000000<br \/>hme1:1: flags=1000843 mtu 1500 index 3<br \/>        inet 192.168.35.210 netmask ffffff00 broadcast 192.168.35.255<\/p>\n<p>Special Note : The virtual server in the zone hides the system details. The hardware on which the zone is running is not exposed to the applications or users. This explains why prtconf reveals nothing about the underlying hardware architecture. The isainfo tool clearly tells us that we are able to run 64-bit sparcv9 and 32-bit sparc applications. As far as the user or application is concerned we have a V880 running. Or a 280R. Or a E15K! It really doesn&#39;t matter because we are in a virtual server that could be within any class of hardware.<\/p>\n<p>Well, there we have it. A virtual server. A new zone is born and running. I now create a user account or two and then use the escape character from the zlogin command to exit the console :<\/p>\n<p># exit<\/p>\n<p>zone1 console login:<\/p>\n<p>zone1 console login: @.<br \/>[Connection to zone &#39;zone1&#39; console closed]<br \/>#<\/p>\n<p>#<\/p>\n<p>Now we are back in the real world! Or at least we are in the global zone. I log out of the server entirely and nmap port scan the virtual server again:<\/p>\n<p># nmap -sS -O -v -v -P0 -T Aggressive -n -oN \/tmp\/zone1.log zone1<\/p>\n<p>Starting nmap 3.20 ( www.insecure.org\/nmap\/ ) at 2004-02-27 09:34 EST<br \/>Host 192.168.35.210 appears to be up &#8230; good.<br \/>Initiating SYN Stealth Scan against 192.168.35.210 at 9:34<br \/>Adding open port 37\/tcp<br \/>Adding open port 22\/tcp<br \/>Adding open port 513\/tcp<br \/>Adding open port 515\/tcp<br \/>Adding open port 514\/tcp<br \/>Adding open port 7100\/tcp<br \/>Adding open port 7\/tcp<br \/>Adding open port 21\/tcp<br \/>Adding open port 587\/tcp<br \/>Adding open port 19\/tcp<br \/>Adding open port 544\/tcp<br \/>Adding open port 9\/tcp<br \/>Adding open port 2105\/tcp<br \/>Adding open port 111\/tcp<br \/>Adding open port 13\/tcp<br \/>Adding open port 79\/tcp<br \/>Adding open port 540\/tcp<br \/>Adding open port 25\/tcp<br \/>Adding open port 543\/tcp<br \/>Adding open port 23\/tcp<br \/>Adding open port 512\/tcp<br \/>The SYN Stealth Scan took 484 seconds to scan 1611 ports.<br \/>For OSScan assuming that port 7 is open and port 1 is closed and neither are firewalled<br \/>Interesting ports on 192.168.35.210:<br \/>(The 1590 ports scanned but not shown below are in state: closed)<br \/>Port       State       Service<br \/>7\/tcp      open        echo<br \/>9\/tcp      open        discard<br \/>13\/tcp     open        daytime<br \/>19\/tcp     open        chargen<br \/>21\/tcp     open        ftp<br \/>22\/tcp     open        ssh<br \/>23\/tcp     open        telnet<br \/>25\/tcp     open        smtp<br \/>37\/tcp     open        time<br \/>79\/tcp     open        finger<br \/>111\/tcp    open        sunrpc<br \/>512\/tcp    open        exec<br \/>513\/tcp    open        login<br \/>514\/tcp    open        shell<br \/>515\/tcp    open        printer<br \/>540\/tcp    open        uucp<br \/>543\/tcp    open        klogin<br \/>544\/tcp    open        kshell<br \/>587\/tcp    open        submission<br \/>2105\/tcp   open        eklogin<br \/>7100\/tcp   open        font-service<br \/>Remote operating system guess: Solaris 9 Beta through Release on SPARC<br \/>OS Fingerprint:<br \/>TSeq(Class=RI%gcd=1%SI=F1B6%IPID=I%TS=100HZ)<br \/>T1(Resp=Y%DF=Y%W=C0B7%ACK=S++%Flags=AS%Ops=NNTMNW)<br \/>T2(Resp=N)<br \/>T3(Resp=N)<br \/>T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)<br \/>T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)<br \/>T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)<br \/>T7(Resp=N)<br \/>PU(Resp=N)<\/p>\n<p>Uptime 0.914 days (since Thu Feb 26 11:47:32 2004)<br \/>TCP Sequence Prediction: Class=random positive increments<br \/>                         Difficulty=61878 (Worthy challenge)<br \/>TCP ISN Seq. Numbers: 7D44D7F9 7D46507E 7D49EF7E 7D4E40EC 7D5145C4 7D5426FD<br \/>IPID Sequence Generation: Incremental<\/p>\n<p>Nmap run completed &#8212; 1 IP address (1 host up) scanned in 517.027 seconds<\/p>\n<p>Essentially all of the usual network services are running on that virtual server. Finally I login to it via ssh :<\/p>\n<p>$&shy;&shy;&shy;&shy; ssh -2 -4 -e^ -l dclarke zone1<br \/>The authenticity of host &#39;zone1 (192.168.35.210)&#39; can&#39;t be established.<br \/>RSA key fingerprint is f0:0b:a1:de:ad:be:ef:01:a4:21:53:8d:ae:de:00:00.<br \/>Are you sure you want to continue connecting (yes\/no)? yes<br \/>Warning: Permanently added &#39;zone1,192.168.35.210&#39; (RSA) to the list of known hosts.<br \/>Password:<br \/>Last login: Fri Feb 27 09:53:53 2004 from blaster<br \/>Sun Microsystems Inc.   SunOS 5.10      s10_51  May 2004<br \/>$&shy;&shy;&shy;&shy;<\/p>\n<p>What more can I say? I have setup a user account for a developer on the virtual server and he can login. There I can grant access to filesystems and other authorities as required. He can do what ever he pleases and I don&#39;t have to worry about resources being tied up or security being breached. I can give him root access and not be concerned at all. Each zone has its own set of objects including processes, network interfaces, System V IPC objects and a unique root file system. Processes in one zone cannot access or control objects in other zones unless a common access point is shared from the global zone. All I need is a server with the hardware resources that can then be split up across zones. If I want an eight processor V880 to be used more effectively then I will manage the zones and allocate the CPU horsepower as needed.<\/p>\n<p>But that is another topic, that would be under Resource Management. Which has been overhauled and made into a powerful tool within Solaris. The new Solaris 10 release will be feature rich and massively powerful in its ability to swallow up tasks. I look forward to playing with it because it really makes complex situations into a fun process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un tutorial sur les ZONES de Solaris 10<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[8],"tags":[],"class_list":["post-105","post","type-post","status-publish","format-standard","hentry","category-informatique"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pWrTo-1H","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=105"}],"version-history":[{"count":0,"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/105\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=105"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.lookit.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}