[ovirt-users] Re: Use local ansible to talk to engineVM and other vm
Thank you. I am running a self-hosted engineVM, and having difficulty connecting the dots so ansible can talk to vms within the self-hosted engineVM. Below is my setup- inventory dir with files *cat ~/ansible/inventory/prod/hosts* [ovirt] ovirt 192.168.1.100 *cat ~/ansible/inventory/prod/ovirt.ini* [ovirt] ovirt_url = https://*engine.ovirt/*ovirt-engine/api # this is self hosted engine. so invoking ./ovirt4.py fails with http error as physical host is 'ovirt' but self-hosted-engine fqdn is 'engine.ovirt' ovirt_username = admin@internal ovirt_password = password ovirt_ca_file = ca.pem . # this sits on my local machine running ovirt4.py standalone fails as mentioned above. *cat ~/ansible/playbook.yml* --- name: Talk to self-hosted-engine server hosts: ovirt tasks: - name: Hello server debug: msg: Hello server --- name: Talk to self-hosted-engine VM hosts: status_up tasks: - name: Hello vms debug: msg: Hello vms *ansible-playbook -i ~/ansible/inventories/prod playbook.yml # prod folder has .ini, .py and static hosts file as above* PLAY [Talk to self-hosted-engine server] ** TASK [Gathering Facts] ok: [ovirt] TASK [Hello server] *** ok: [ovirt] => { "msg": "Hello server" } [WARNING]: Could not match supplied host pattern, ignoring: status_up PLAY [Talk to self-hosted-engine VM] ** *skipping: no hosts matched* PLAY RECAP ovirt : ok=2changed=0unreachable=0failed=0 Is there something i am missing? On 22 May 2018 at 10:25, Martin Sivak wrote: > Hi, > > you can use multiple different inventory sources at the same time - so > use your file + ovirt4.py > > https://docs.ansible.com/ansible/2.5/user_guide/intro_ > dynamic_inventory.html#using-inventory-directories-and- > multiple-inventory-sources > > Best regards > > Martin Sivak > > On Tue, May 22, 2018 at 9:50 AM, Sumit Bharadia <03ce...@gmail.com> wrote: > > Thanks. > > > > Is there a way to use an existing inventory file? > > > > I asked because the server where the engineVM is running is listed into > my > > existing a ansible inventory file on my local machine, but how do I > > specify/run the subsequent tasks which I want to run on vms running on > > engineVM as I don't see the /etc/hosts file updated where engineVM runs. > How > > would my local ansible playbook know which vms are available, etc? > > > > > > > > On Tue, 22 May 2018, 8:36 am Ondra Machacek, > wrote: > >> > >> On 05/21/2018 11:51 AM, 03ce...@gmail.com wrote: > >> > I have a self-hosted-engine (4.2) running on a centos 7.4 server. > >> > > >> > I have downloaded ovirt ansible roles from ansible-galaxy and can run > >> > them from the server where the engineVM is running and able to deploy > new > >> > vms, clusters, dc, etc. > >> > > >> > I have seen the use of ovirt4.py file to target and group hosts which > >> > you can target for specific plays. However, the box where > self-hosted-engine > >> > is running is a physical server but I am looking to run ansible from > my > >> > local machine instead to manage vms running on engineVM. Is there a > way to > >> > achieve this? > >> > >> Sure you can use your own computer to manage the VMs. > >> > >> In your playbook you just need to specify group/host where the tasks of > >> the playbook should run. > >> > >> So if using the ovirt4.py script as your inventory file, you need to > >> just specify specific group where you want to run the tasks in your > >> playbook like this: > >> > >> - hosts: tag_httpd > >>tasks: > >> ... > >> > >> If you want to Create/Delete VMs using ovirt_* modules, you can do it > >> from your computer as well, but you need to install Python SDK version > >> 4. You can download it from pip using following command: pip install > >> ovirt-engine-sdk-python. > >> > >> > > >> > Thank you in advance. > >> > > >> > ___ > >> > Users mailing list -- users@ovirt.org > >> > To unsubscribe send an email to users-le...@ovirt.org > >> > > > > > > > ___ > > Users mailing list -- users@ovirt.org > > To unsubscribe send an email to users-le...@ovirt.org > > > ___ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-le...@ovirt.org
[ovirt-users] Re: Use local ansible to talk to engineVM and other vm
Thanks. Is there a way to use an existing inventory file? I asked because the server where the engineVM is running is listed into my existing a ansible inventory file on my local machine, but how do I specify/run the subsequent tasks which I want to run on vms running on engineVM as I don't see the /etc/hosts file updated where engineVM runs. How would my local ansible playbook know which vms are available, etc? On Tue, 22 May 2018, 8:36 am Ondra Machacek, wrote: > On 05/21/2018 11:51 AM, 03ce...@gmail.com wrote: > > I have a self-hosted-engine (4.2) running on a centos 7.4 server. > > > > I have downloaded ovirt ansible roles from ansible-galaxy and can run > them from the server where the engineVM is running and able to deploy new > vms, clusters, dc, etc. > > > > I have seen the use of ovirt4.py file to target and group hosts which > you can target for specific plays. However, the box where > self-hosted-engine is running is a physical server but I am looking to run > ansible from my local machine instead to manage vms running on engineVM. Is > there a way to achieve this? > > Sure you can use your own computer to manage the VMs. > > In your playbook you just need to specify group/host where the tasks of > the playbook should run. > > So if using the ovirt4.py script as your inventory file, you need to > just specify specific group where you want to run the tasks in your > playbook like this: > > - hosts: tag_httpd >tasks: > ... > > If you want to Create/Delete VMs using ovirt_* modules, you can do it > from your computer as well, but you need to install Python SDK version > 4. You can download it from pip using following command: pip install > ovirt-engine-sdk-python. > > > > > Thank you in advance. > > > > ___ > > Users mailing list -- users@ovirt.org > > To unsubscribe send an email to users-le...@ovirt.org > > > ___ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-le...@ovirt.org
[ovirt-users] Re: First host within Self-Hosted engine stays in non-responsive state
thanks, will give it a try and report back. On 18 May 2018 at 09:45, Simone Tiraboschi wrote: > > > On Fri, May 18, 2018 at 10:30 AM, Sumit Bharadia <03ce...@gmail.com> > wrote: > >> I see, which one specific step during the hosted-engine-setup option, is >> it 1st or the 2nd question I need to set value for? >> >> >>1. Please provide a comma-separated list (max 3) of IP addresses of >>domain name servers for the engine VM >>2. Add lines for the appliance itself and for this host to /etc/hosts >>on the engine VM? >> >> Say yes to this one. > > > >> thank you. >> >> >> On 18 May 2018 at 09:20, Simone Tiraboschi wrote: >> >>> >>> >>> On Fri, May 18, 2018 at 10:09 AM, Sumit Bharadia <03ce...@gmail.com> >>> wrote: >>> >>>> attached, initial engine.log from engine VM >>>> >>> >>> OK, your issue is here: >>> >>> 2018-05-18 09:05:27,756+01 ERROR >>> [org.ovirt.vdsm.jsonrpc.client.reactors.ReactorClient] >>> (EE-ManagedThreadFactory-engineScheduled-Thread-12) [294c1528] >>> Exception during connection >>> 2018-05-18 09:05:27,763+01 ERROR >>> [org.ovirt.engine.core.vdsbroker.monitoring.HostMonitoring] >>> (EE-ManagedThreadFactory-engineScheduled-Thread-12) [294c1528] Unable >>> to RefreshCapabilities: UnknownHostException: ovirt >>> 2018-05-18 09:05:27,766+01 ERROR [org.ovirt.engine.core.vdsbrok >>> er.vdsbroker.GetCapabilitiesAsyncVDSCommand] >>> (EE-ManagedThreadFactory-engineScheduled-Thread-12) [294c1528] Command >>> 'GetCapabilitiesAsyncVDSCommand(HostName = ovirt, >>> VdsIdAndVdsVDSCommandParametersBase:{hostId='80fed076-1789-4e8e-bbd9-cfde1b0faea2', >>> vds='Host[ovirt,80fed076-1789-4e8e-bbd9-cfde1b0faea2]'})' execution >>> failed: java.net.UnknownHostException: ovirt >>> 2018-05-18 09:05:27,786+01 ERROR [org.ovirt.engine.core.dal.dbb >>> roker.auditloghandling.AuditLogDirector] >>> (EE-ManagedThreadFactory-engineScheduled-Thread-14) >>> [294c1528] EVENT_ID: VDS_BROKER_COMMAND_FAILURE(10,802), VDSM ovirt >>> command GetCapabilitiesAsyncVDS failed: Connection issue ovirt >>> 2018-05-18 09:05:27,786+01 ERROR >>> [org.ovirt.engine.core.vdsbroker.monitoring.HostMonitoring] >>> (EE-ManagedThreadFactory-engineScheduled-Thread-14) [294c1528] Unable >>> to RefreshCapabilities: VDSNetworkException: VDSGenericException: >>> VDSNetworkException: Connection issue ovirt >>> >>> >>> When the engine VM restarts from the shared storage your engine VM could >>> not resolve 'ovirt' address and so the host becomes unresponsive at engine >>> eyes. >>> Is your DNS properly working? if not, please take care that >>> hosted-engine-setup has an option for injecting a value into /etc/hosts on >>> the engine VM for you. >>> >>> >>>> >>>> thank you. >>>> >>>> On 18 May 2018 at 08:35, Simone Tiraboschi wrote: >>>> >>>>> Here engine.log got already rotated, we need the initial engine.log; >>>>> can you please look for that? >>>>> >>>>> >>>>> On Fri, May 18, 2018 at 9:34 AM, Sumit Bharadia <03ce...@gmail.com> >>>>> wrote: >>>>> >>>>>> attached engine.log from engine VM >>>>>> >>>>>> thank you. >>>>>> >>>>>> On 18 May 2018 at 08:10, Simone Tiraboschi >>>>>> wrote: >>>>>> >>>>>>> Hi, >>>>>>> can you please attach the whole engine.log file? >>>>>>> >>>>>>> On Fri, May 18, 2018 at 8:43 AM, <03ce...@gmail.com> wrote: >>>>>>> >>>>>>>> I am trying to setup self-hosted-engine (4.2) on a single machine >>>>>>>> running centos 7.4. >>>>>>>> >>>>>>>> I ran hosted-engine deploy script and it ran all the way through >>>>>>>> but failed on last task (at "Wait for the local bootstrap VM to be >>>>>>>> down at >>>>>>>> engine eyes") while creating the local engine VM. However, the >>>>>>>> --vm-status >>>>>>>> shows the engine status as up and is in good health, but I cannot >>>>>>>> interact >>>>>
[ovirt-users] Re: First host within Self-Hosted engine stays in non-responsive state
I see, which one specific step during the hosted-engine-setup option, is it 1st or the 2nd question I need to set value for? 1. Please provide a comma-separated list (max 3) of IP addresses of domain name servers for the engine VM 2. Add lines for the appliance itself and for this host to /etc/hosts on the engine VM? thank you. On 18 May 2018 at 09:20, Simone Tiraboschi wrote: > > > On Fri, May 18, 2018 at 10:09 AM, Sumit Bharadia <03ce...@gmail.com> > wrote: > >> attached, initial engine.log from engine VM >> > > OK, your issue is here: > > 2018-05-18 09:05:27,756+01 ERROR > [org.ovirt.vdsm.jsonrpc.client.reactors.ReactorClient] > (EE-ManagedThreadFactory-engineScheduled-Thread-12) [294c1528] Exception > during connection > 2018-05-18 09:05:27,763+01 ERROR [org.ovirt.engine.core. > vdsbroker.monitoring.HostMonitoring] > (EE-ManagedThreadFactory-engineScheduled-Thread-12) > [294c1528] Unable to RefreshCapabilities: UnknownHostException: ovirt > 2018-05-18 09:05:27,766+01 ERROR [org.ovirt.engine.core. > vdsbroker.vdsbroker.GetCapabilitiesAsyncVDSCommand] > (EE-ManagedThreadFactory-engineScheduled-Thread-12) [294c1528] Command ' > GetCapabilitiesAsyncVDSCommand(HostName = ovirt, > VdsIdAndVdsVDSCommandParametersBase:{hostId='80fed076-1789-4e8e-bbd9-cfde1b0faea2', > vds='Host[ovirt,80fed076-1789-4e8e-bbd9-cfde1b0faea2]'})' execution > failed: java.net.UnknownHostException: ovirt > 2018-05-18 09:05:27,786+01 ERROR [org.ovirt.engine.core.dal. > dbbroker.auditloghandling.AuditLogDirector] > (EE-ManagedThreadFactory-engineScheduled-Thread-14) > [294c1528] EVENT_ID: VDS_BROKER_COMMAND_FAILURE(10,802), VDSM ovirt > command GetCapabilitiesAsyncVDS failed: Connection issue ovirt > 2018-05-18 09:05:27,786+01 ERROR [org.ovirt.engine.core. > vdsbroker.monitoring.HostMonitoring] > (EE-ManagedThreadFactory-engineScheduled-Thread-14) > [294c1528] Unable to RefreshCapabilities: VDSNetworkException: > VDSGenericException: VDSNetworkException: Connection issue ovirt > > > When the engine VM restarts from the shared storage your engine VM could > not resolve 'ovirt' address and so the host becomes unresponsive at engine > eyes. > Is your DNS properly working? if not, please take care that > hosted-engine-setup has an option for injecting a value into /etc/hosts on > the engine VM for you. > > >> >> thank you. >> >> On 18 May 2018 at 08:35, Simone Tiraboschi wrote: >> >>> Here engine.log got already rotated, we need the initial engine.log; can >>> you please look for that? >>> >>> >>> On Fri, May 18, 2018 at 9:34 AM, Sumit Bharadia <03ce...@gmail.com> >>> wrote: >>> >>>> attached engine.log from engine VM >>>> >>>> thank you. >>>> >>>> On 18 May 2018 at 08:10, Simone Tiraboschi wrote: >>>> >>>>> Hi, >>>>> can you please attach the whole engine.log file? >>>>> >>>>> On Fri, May 18, 2018 at 8:43 AM, <03ce...@gmail.com> wrote: >>>>> >>>>>> I am trying to setup self-hosted-engine (4.2) on a single machine >>>>>> running centos 7.4. >>>>>> >>>>>> I ran hosted-engine deploy script and it ran all the way through but >>>>>> failed on last task (at "Wait for the local bootstrap VM to be down at >>>>>> engine eyes") while creating the local engine VM. However, the >>>>>> --vm-status >>>>>> shows the engine status as up and is in good health, but I cannot >>>>>> interact >>>>>> with host installed on engine VM. >>>>>> >>>>>> The host within engine VM shows it is in non-responsive state, not >>>>>> clear why and what caused it. I can ssh into the local engine VM and the >>>>>> engine.log has below entries - >>>>>> >>>>>> 2018-05-17 11:03:57,739+01 ERROR [org.ovirt.engine.core.vdsbrok >>>>>> er.monitoring.VmDevicesMonitoring] >>>>>> (EE-ManagedThreadFactory-engineScheduled-Thread-78) >>>>>> [6768004b] Exception:: >>>>>> org.springframework.dao.DataIntegrityViolationException: >>>>>> CallableStatementCallback; SQL [{call insertvmdevice(?, ?, ?, ?, ?, ?, ?, >>>>>> ?, ?, ?, ?, ?, ?, ?)}]; ERROR: insert or update on table "vm_device" >>>>>> violates foreign key constraint "fk_vm_device_vm_static" >>>>>> Detail: Key (vm_id)=(114
[ovirt-users] Re: Self-Hosted engine deploy fails but hosted-engine --vm-status shows engine in good health
found below in engine.log on engine VM 2018-05-17 11:03:57,739+01 ERROR [org.ovirt.engine.core.vdsbroker.monitoring.VmDevicesMonitoring] (EE-ManagedThreadFactory-engineScheduled-Thread-78) [6768004b] Exception:: org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call insertvmdevice(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}]; ERROR: insert or update on table "vm_device" violates foreign key constraint "fk_vm_device_vm_static" Detail: Key (vm_id)=(114581bb-7fef-4b08-8e3c-85dd5a9e680b) is not present in table "vm_static". ... ... ... 2018-05-17 11:03:59,957+01 ERROR [org.ovirt.engine.core.bll.pm.FenceProxyLocator] (EE-ManagedThreadFactory-engineScheduled-Thread-44) [2bf8b18f] Can not run fence action on host 'ovirt', no suitable proxy host was found. ... ... ... 2018-05-17 11:20:00,093+01 ERROR [org.ovirt.vdsm.jsonrpc.client.reactors.ReactorClient] (EE-ManagedThreadFactory-engine-Thread-2) [1a833057] Exception during connection ... ... ... 2018-05-17 11:20:00,386+01 ERROR [org.ovirt.engine.core.vdsbroker.HostDevListByCapsVDSCommand] (EE-ManagedThreadFactory-engine-Thread-2) [1a833057] Command 'HostDevListByCapsVDSCommand(HostName = ovirt, VdsIdAndVdsVDSCommandParametersBase:{hostId='1a6a47e6-934e-43f7-ad5b-ba8f8ff8df99', vds='Host[ovirt,1a6a47e6-934e-43f7-ad5b-ba8f8ff8df99]'})' execution failed: java.net.UnknownHostException: ovirt: Name or service not known ... ... ... 2018-05-17 11:20:03,287+01 ERROR [org.ovirt.vdsm.jsonrpc.client.reactors.ReactorClient] (EE-ManagedThreadFactory-engineScheduled-Thread-14) [] Exception during connection 2018-05-17 11:20:03,292+01 ERROR [org.ovirt.engine.core.vdsbroker.monitoring.HostMonitoring] (EE-ManagedThreadFactory-engineScheduled-Thread-14) [] Unable to RefreshCapabilities: UnknownHostException: ovirt 2018-05-17 11:20:03,294+01 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.GetCapabilitiesAsyncVDSCommand] (EE-ManagedThreadFactory-engineScheduled-Thread-14) [] Command 'org.ovirt.engine.core.vdsbroker.vdsbroker.GetCapabilitiesAsyncVDSCommand' return value 'org.ovirt.engine.core.vdsbroker.vdsbroker.VDSInfoReturn@46e3da89' 2018-05-17 11:20:03,294+01 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.GetCapabilitiesAsyncVDSCommand] (EE-ManagedThreadFactory-engineScheduled-Thread-14) [] HostName = ovirt 2018-05-17 11:20:03,297+01 ERROR [org.ovirt.engine.core.vdsbroker.vdsbroker.GetCapabilitiesAsyncVDSCommand] (EE-ManagedThreadFactory-engineScheduled-Thread-14) [] Command 'GetCapabilitiesAsyncVDSCommand(HostName = ovirt, VdsIdAndVdsVDSCommandParametersBase:{hostId='1a6a47e6-934e-43f7-ad5b-ba8f8ff8df99', vds='Host[ovirt,1a6a47e6-934e-43f7-ad5b-ba8f8ff8df99]'})' execution failed: java.net.UnknownHostException: ovirt 2018-05-17 11:20:03,316+01 ERROR [org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector] (EE-ManagedThreadFactory-engineScheduled-Thread-15) [] EVENT_ID: VDS_BROKER_COMMAND_FAILURE(10,802), VDSM ovirt command GetCapabilitiesAsyncVDS failed: Connection issue ovirt 2018-05-17 11:20:03,317+01 ERROR [org.ovirt.engine.core.vdsbroker.monitoring.HostMonitoring] (EE-ManagedThreadFactory-engineScheduled-Thread-15) [] Unable to RefreshCapabilities: VDSNetworkException: VDSGenericException: VDSNetworkException: Connection issue ovirt ... ... ... and then above 5 error messages are keep repeating. What does this mean? And how do I resolve this? On 17 May 2018 at 12:59, Simone Tiraboschi wrote: > > > On Thu, May 17, 2018 at 12:37 PM, <03ce...@gmail.com> wrote: > >> I am setting up self-hosted engine (4.2) on centos 7.4. >> >> The setup runs all the way through and creates the local VM, but fails on >> task "Wait for the local bootstrap VM to be down at engine eyes". >> >> But if I then run hosted-engine --vm-start, it comes back up and shows it >> is in good health, but when I do an api call with curl, it shows me that >> the host is in 'non responsive' state! I cannot deploy any VM on the engine >> VM, the ssh connection fails. >> >> How and what could have caused it, where can i find more detailed >> information related to this error/status of engine vm ? >> > > you have setup logs in /var/log/ovirt-hosted-engine-setup > > >> >> Thanks >> ___ >> Users mailing list -- users@ovirt.org >> To unsubscribe send an email to users-le...@ovirt.org >> > > ___ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-le...@ovirt.org
[ovirt-users] Re: Ovirt Self Hosted engine deploy fails
thanks, i get below message *Failed to start ovn-controller.service: Unit not found.* isn't it included within appliance we get for self-hosted-ovirt-engine? On 14 May 2018 at 12:53, Simone Tiraboschi wrote: > > > On Mon, May 14, 2018 at 11:52 AM, Sumit Bharadia <03ce...@gmail.com> > wrote: > >> the output of: journalctl -xe -u ovn-controller >> -- No entries -- >> >> what is the command to manual restart of this service? >> > > systemctl start ovn-controller > > >> >> Thank you. >> >> On 14 May 2018 at 09:12, Simone Tiraboschi wrote: >> >>> >>> >>> On Mon, May 14, 2018 at 10:03 AM, Sumit Bharadia <03ce...@gmail.com> >>> wrote: >>> >>>> attached from engine VM. >>>> >>> >>> >>> The issue is here: >>> >>> 2018-05-14 08:04:50,596 p=26024 u=ovirt | TASK >>> [ovirt-provider-ovn-driver : Ensure ovn-controller is started] >>> 2018-05-14 08:04:51,991 p=26024 u=ovirt | fatal: [ovirt]: FAILED! => { >>> "changed": false >>> } >>> >>> MSG: >>> >>> Unable to start service ovn-controller: A dependency job for >>> ovn-controller.service failed. See 'journalctl -xe' for details. >>> >>> >>> Can you please double check the output of: >>> journalctl -xe -u ovn-controller >>> >>> >>> >>>> >>>> Thank you. >>>> >>>> On 14 May 2018 at 08:46, Simone Tiraboschi wrote: >>>> >>>>> Hi, >>>>> can you please attach host-deploy logs? >>>>> You can find them under /var/log/ovirt-engine/host-deploy on the >>>>> engine VM (you can reach it with ssh from the host you tried to deploy). >>>>> >>>>> On Mon, May 14, 2018 at 9:27 AM, <03ce...@gmail.com> wrote: >>>>> >>>>>> I am trying to setup self hosted ovirt engine (4.2) on centos 7.4, >>>>>> but the setup fails after 'Add host' task on 'wait for the host to be >>>>>> up'. >>>>>> The log doesn't seem to give clear indication where the issue might be. >>>>>> But >>>>>> I got below when ssh manually into ovirt appliance where the >>>>>> engine-deploy >>>>>> runs and I see the host status as'install_failed'. >>>>>> >>>>>> Where the issue might be, and where can i find detailed log on >>>>>> failure? >>>>>> >>>>>> "ovirt_hosts": [ >>>>>> { >>>>>> "address": "ovirt", >>>>>> "affinity_labels": [], >>>>>> "auto_numa_status": "unknown", >>>>>> "certificate": { >>>>>> "organization": "ovirt", >>>>>> "subject": "O=ovirt,CN=ovirt" >>>>>> }, >>>>>> "cluster": { >>>>>> "href": "/ovirt-engine/api/clusters/ba >>>>>> 170b8e-5744-11e8-8676-00163e3c9a32", >>>>>> "id": "ba170b8e-5744-11e8-8676-00163e3c9a32" >>>>>> }, >>>>>> "comment": "", >>>>>> "cpu": { >>>>>> "speed": 0.0, >>>>>> "topology": {} >>>>>> }, >>>>>> "device_passthrough": { >>>>>> "enabled": false >>>>>> }, >>>>>> "devices": [], >>>>>> "external_network_provider_configurations": [], >>>>>> "external_status": "ok", >>>>>> "hardware_information": { >>>>>> "supported_rng_sources": [] >>>>>> }, >>>>>> "hooks": [], >>>>>> "href": "/ovirt-engine/api/hosts/aad0f >>>>>> e84-2a9b-446d-ac02